
ผู้ช่วย GPT RACK-APP
rack-app เป็นกรอบเว็บที่เรียบง่ายที่มุ่งเน้นไปที่ความเรียบง่ายและการบำรุงรักษา เฟรมเวิร์กมีความหมายที่จะใช้โดยนักพัฒนาเว็บที่มีประสบการณ์
rack-app มุ่งเน้นไปที่การรักษาการพึ่งพาให้น้อยที่สุดเท่าที่จะเป็นไปได้ในขณะที่อนุญาตให้เขียนแอปพลิเคชันที่ใช้งานได้และเรียบง่ายซึ่งจะไม่ทำอะไรมากไปกว่าสิ่งที่คุณกำหนด
การกำหนดเส้นทางใช้ทรีคำนำหน้าดังนั้นการเพิ่มจุดปลาย API จำนวนมากจะไม่ส่งผลกระทบต่อเวลาค้นหาเส้นทาง
มันได้รับแรงบันดาลใจจาก Sinatra grape และ rack มันใช้ในการผลิตเพิ่มพลัง APIs แบ็คเอนด์ที่ทำงานบนคลาวด์สาธารณะ
เฟรมเวิร์กถือว่ามีเสถียรภาพ ฉันไม่มีแผนที่จะนำเสนอกรอบการทำงานโดยไม่ต้องใช้กรณีการใช้งานจริงเนื่องจากกรณีขอบที่กำหนดเองส่วนใหญ่สามารถแก้ไขได้ด้วยองค์ประกอบ
ครั้งต่อไปที่จะได้รับการอัปเดตเพิ่มเติมเมื่อ RACK ให้การสนับสนุนที่สรุปสำหรับ HTTP2
หากคุณมีปัญหาฉันตรวจสอบรายสัปดาห์แท็บปัญหาตอบและตอบกลับหรือใช้การแก้ไข
เนื่องจากเฟรมเวิร์กการพึ่งพาเพียงอย่างเดียวคืออัญมณี rack ฉันไม่จำเป็นต้องอัปเดต codebase บ่อยเกินไป
ไชโยและการเขียนโค้ดที่มีความสุข!
เพิ่มบรรทัดนี้ใน Gemfile ของแอปพลิเคชันของคุณ:
gem 'rack-app'แล้วดำเนินการ:
$ bundle
หรือติดตั้งด้วยตัวเองเป็น:
$ gem install rack-app
ใช่มันเป็นกำลังใจให้ Heroku เป็นเจ้าภาพการบริการขนาดเล็กอยู่แล้ว
เราเตอร์ของ Rack-App ขึ้นอยู่กับโครงสร้างต้นไม้ซึ่งใช้ คำนำหน้าอย่างหนักโดยทั่วไป มันเป็น ต้นไม้นำหน้า ขนาดกะทัดรัด (หรือเพียงแค่ ต้นไม้ Radix ) โหนดที่มีคำนำหน้าทั่วไปยังแบ่งปันผู้ปกครองทั่วไป
Daniel Nagy
Daniel Szpisjak
Jeremy Evans
เดวิดบุช
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 :: Request ด้วยวิธีการร้องขอและ Rack :: การตอบกลับเป็นวิธีการตอบกลับ
โดยค่าเริ่มต้นหากคุณไม่ได้เขียนอะไรลงในการตอบกลับ 'body' การส่งคืนตรรกะของบล็อกจุดปลาย
หากคุณไม่สนใจที่จะขยายรายการการพึ่งพาของคุณคุณสามารถใช้ส่วนขยาย 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" ซึ่งรวมถึงเทมเพลตที่ใช้เช่น layout.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 ที่เก็บข้อมูล
ขั้นพื้นฐาน
ESCHER API ที่ได้รับอนุญาต
หลังจากตรวจสอบ repo ให้เรียกใช้ bin/setup เพื่อติดตั้งการพึ่งพา จากนั้นเรียกใช้ rake spec เพื่อเรียกใช้การทดสอบ นอกจากนี้คุณยังสามารถเรียกใช้ bin/console สำหรับพรอมต์แบบโต้ตอบที่จะช่วยให้คุณสามารถทดลองได้
ในการติดตั้งอัญมณีนี้ลงบนเครื่องในเครื่องของคุณให้เรียกใช้ bundle exec rake install หากต้องการเปิดตัวเวอร์ชันใหม่ให้อัปเดตหมายเลขเวอร์ชันใน version.rb จากนั้นเรียกใช้ bundle exec rake release ซึ่งจะสร้างแท็ก GIT สำหรับเวอร์ชันกด GIT และแท็กและกดไฟล์ .gem ไปที่ rubygems.org
รายงานข้อผิดพลาดและคำขอดึงยินดีต้อนรับบน GitHub ที่ https://github.com/rack-app/rack-app โครงการนี้มีจุดประสงค์เพื่อให้ปลอดภัยพื้นที่ต้อนรับสำหรับการทำงานร่วมกันและผู้มีส่วนร่วมคาดว่าจะปฏิบัติตามรหัสพันธสัญญาของผู้สนับสนุน
Rack :: App เป็นซอฟต์แวร์ฟรีที่เปิดตัวภายใต้ใบอนุญาต Apache License V2 โลโก้ได้รับการออกแบบโดยZsófia Gebauer มันเป็นลิขสิทธิ์© 2015 Adam Luzsi สงวนลิขสิทธิ์