
رف آب GPT مساعد
rack-app هو إطار عمل على شبكة الإنترنت يركز على البساطة والقابلية للصيانة. من المفترض أن يستخدم إطار العمل من قبل مطوري الويب المتمرسين.
يركز rack-app على الحفاظ على التبعيات بأقل قدر ممكن ، مع السماح لكتابة التطبيقات الوظيفية والبسيطة القائمة على الرف ، والتي لن تفعل شيئًا أكثر مما حددته.
يستخدم التوجيه شجرة بادئة ، وبالتالي فإن إضافة عدد كبير من نقاط نهاية API لن تؤثر على وقت البحث في التوجيه.
تم إلهامه من قبل Sinatra ، grape ، rack . يتم استخدامه في الإنتاج ، مما يعمل واجهات برمجة التطبيقات الخلفية التي تعمل على السحابة العامة.
يعتبر الإطار مستقرًا. ليس لدي خطة لتوضيح زحف الإطار دون عوامل استخدام واقعية ، حيث يمكن حل معظم حالات الحافة المخصصة بتكوين.
في المرة التالية التي ستتلقى فيها المزيد من التحديثات ، عندما يوفر Rack دعمًا نهائيًا لـ HTTP2.
إذا كان لديك مشكلة ، فأنا أتحقق أسبوعيًا من علامة تبويب المشكلات أو الإجابة والرد أو تنفيذ إصلاح لها.
نظرًا لأن التبعية الوحيدة للإطار هو جوهرة rack ، فلا يتعين علي تحديث قاعدة الشفرة في كثير من الأحيان.
هتافات وترميز سعيد!
أضف هذا السطر إلى Gemfile في التطبيق الخاص بك:
gem 'rack-app'ثم تنفذ:
$ bundle
أو تثبيته بنفسك على النحو التالي:
$ gem install rack-app
نعم ، إنه يعمل بالفعل على تشغيل الخدمات الصغيرة Heroku.
يعتمد جهاز التوجيه الخاص بـ Rack-App على بنية شجرة يستفيد من البادئات الشائعة ، وهو في الأساس شجرة بادئة مضغوطة (أو شجرة Radix فقط). تشترك العقد مع بادئة مشتركة أيضًا في أحد الوالدين المشتركين.
دانييل ناجي
دانييل Szpisjak
جيريمي إيفانز
ديفيد بوش
thesmartnik
require 'rack/app'
class App < Rack :: App
desc 'some hello endpoint'
get '/hello' do
'Hello World!'
end
end require 'rack/app'
class App < Rack :: App
mount SomeAppClass
headers 'Access-Control-Allow-Origin' => '*' ,
'Access-Control-Expose-Headers' => 'X-My-Custom-Header, X-Another-Custom-Header'
serializer do | object |
object . to_s
end
desc 'some hello endpoint'
validate_params do
required 'words' , :class => Array , :of => String , :desc => 'some word' , :example => [ 'pug' ]
optional 'word' , :class => String , :desc => 'one word' , :example => 'pug'
optional 'boolean' , :class => :boolean , :desc => 'boolean value' , :example => true
end
get '/hello' do
puts ( params [ 'words' ] )
'Hello World!'
end
namespace '/users' do
desc 'some restful endpoint'
get '/:user_id' do
response . status = 201
params [ 'user_id' ] #=> restful parameter :user_id
say #=> "hello world!"
end
end
desc 'some endpoint that has error and will be rescued'
get '/make_error' do
raise ( StandardError , 'error block rescued' )
end
def say
"hello #{ params [ 'user_id' ] } !"
end
error StandardError , NoMethodError do | ex |
{ :error => ex . message }
end
root '/hello'
get '/stream' do
stream do | out |
out << 'data row'
end
end
endيمكنك الوصول إلى Rack :: طلب باستخدام طريقة الطلب و Rack :: Response كطريقة استجابة.
افتراضيًا ، إذا لم تكتب أي شيء إلى "الجسم" ، فسيتم استخدام عودة منطق كتلة نقطة النهاية
إذا كنت لا تمانع في توسيع قائمة التبعية الخاصة بك ، فيمكنك استخدام ملحق Front_end لإنشاء تطبيقات الويب المستندة إلى القالب.
require 'rack/app'
require 'rack/app/front_end' # You need to add `gem 'rack-app-front_end'` to your Gemfile
class App < Rack :: App
apply_extensions :front_end
helpers do
def method_that_can_be_used_in_template
'hello world!'
end
end
# use ./app/layout.html.erb as layout, this is optionable
layout 'layout.html.erb'
# at '/' the endpoint will serve (render)
# the ./app/index.html content as response body and wrap around with layout if the layout is given
get '/' do
render 'index.html'
end
endيتوقع هذا المثال مجلد "تطبيق" بجوار ملف "app.rb" الذي يتضمن قوالب تستخدم مثل التصميم. html.erb و index.html.
للاختبار ، استخدم الرف/الاختبار أو وحدة الاختبار المجمعة لكتابة اختبار وحدة لتطبيق الحامل الخاص بك
require 'spec_helper'
require 'rack/app/test'
describe App do
include Rack :: App :: Test
rack_app described_class
describe '/hello' do
# example for params and headers and payload use
subject { get ( url : '/hello' , params : { 'dog' => 'meat' } , headers : { 'X-Cat' => 'fur' } , payload : 'some string' ) }
it { expect ( subject . status ) . to eq 200 }
it { expect ( subject . body ) . to eq "Hello World!" }
end
describe '/users/:user_id' do
# restful endpoint example
subject { get ( url : '/users/1234' ) }
it { expect ( subject . body ) . to eq 'hello 1234!' }
it { expect ( subject . status ) . to eq 201 }
end
describe '/make_error' do
# error handled example
subject { get ( url : '/make_error' ) }
it { expect ( subject . body ) . to eq '{:error=>"error block rescued"}' }
end
end
الموقع الرسمي كيفية الأمثلة
Rack :: App Team Github Repositories
أساسي
Escher المصرح بها API
بعد التحقق من الريبو ، قم بتشغيل bin/setup لتثبيت التبعيات. ثم ، قم بتشغيل rake spec لتشغيل الاختبارات. يمكنك أيضًا تشغيل bin/console للحصول على مطالبة تفاعلية تتيح لك التجربة.
لتثبيت هذه الأحجار الكريمة على جهازك المحلي ، قم بتشغيل bundle exec rake install . لإصدار إصدار جديد ، قم بتحديث رقم الإصدار في version.rb ، ثم قم بتشغيل bundle exec rake release ، والذي سيقوم بإنشاء علامة GIT للإصدار ، و Push Git Commits و Tags ، ودفع ملف .gem إلى rubygems.org.
يتم الترحيب بتقارير الأخطاء وطلبات السحب على Github على https://github.com/rack-app/rack-app ، يهدف هذا المشروع إلى أن يكون مساحة آمنة ومرحبًا بالتعاون ، ومن المتوقع أن يلتزم المساهمون بقواعد سلوك العهد المساهم.
Rack :: App هو برنامج مجاني تم إصداره بموجب ترخيص Apache License V2. تم تصميم الشعار من قبل Zsófia Gebauer. إنه حقوق الطبع والنشر © 2015 Adam Luzsi. جميع الحقوق محفوظة.