
Asisten Rack-App GPT
rack-app adalah kerangka kerja web minimalis yang berfokus pada kesederhanaan dan pemeliharaan. Kerangka kerja ini dimaksudkan untuk digunakan oleh pengembang web berpengalaman.
rack-app Fokus pada menjaga ketergantungan sesedikit mungkin, sambil memungkinkan penulisan aplikasi berbasis rak fungsional dan minimalis, yang tidak akan melakukan tidak lebih dari apa yang Anda tentukan.
Routing menggunakan pohon awalan, sehingga menambahkan sejumlah besar titik akhir API tidak akan mempengaruhi waktu pencarian perutean.
Itu diinspirasi oleh Sinatra , grape , dan rack . Ini digunakan dalam produksi, memberi daya pada API back-end berjalan di cloud publik.
Kerangka kerja dianggap stabil. Saya tidak memiliki rencana untuk menampilkan creep kerangka kerja tanpa kasus penggunaan kehidupan nyata, karena sebagian besar kasus tepi kustom dapat diselesaikan dengan komposisi.
Lain kali ia akan menerima pembaruan lebih lanjut, ketika Rack memberikan dukungan yang diselesaikan untuk HTTP2.
Jika Anda memiliki masalah, saya mingguan memeriksa tab masalah, menjawab dan membalas, atau mengimplementasikan perbaikan untuk itu.
Karena satu -satunya ketergantungan kerangka kerja adalah permata rack , saya tidak perlu memperbarui basis kode terlalu sering.
Cheers dan Happy Coding!
Tambahkan baris ini ke gemfile aplikasi Anda:
gem 'rack-app'Dan kemudian mengeksekusi:
$ bundle
Atau instal sendiri sebagai:
$ gem install rack-app
Ya, itu sudah memberi kekuatan pada Heroku yang menjadi tuan rumah layanan mikro.
Router Rack-App bergantung pada struktur pohon yang memanfaatkan awalan umum , pada dasarnya itu adalah pohon awalan yang ringkas (atau hanya pohon radix ). Node dengan awalan umum juga berbagi orang tua yang umum.
Daniel Nagy
Daniel Szpisjak
Jeremy Evans
David Bush
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
endAnda dapat mengakses rak :: permintaan dengan metode permintaan dan rak :: respons sebagai metode respons.
Secara default, jika Anda tidak menulis apa pun ke respons 'body' The Endpoint Block Logic Return akan digunakan
Jika Anda tidak keberatan memperluas daftar ketergantungan Anda maka Anda dapat menggunakan ekstensi front_end untuk membuat aplikasi web berbasis templat.
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
endContoh ini mengharapkan folder "aplikasi" di sebelah file "app.rb" yang menyertakan templat yang digunakan seperti tata letak.html.erb dan index.html.
Untuk pengujian gunakan rak/tes atau modul pengujian bundel untuk menulis unit test untuk aplikasi rak Anda
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
Situs web resmi bagaimana contohnya
Rack :: App Team Github Repositories
Dasar
Escher API Resmi
Setelah memeriksa repo, jalankan bin/setup untuk menginstal dependensi. Kemudian, jalankan rake spec untuk menjalankan tes. Anda juga dapat menjalankan bin/console untuk prompt interaktif yang akan memungkinkan Anda untuk bereksperimen.
Untuk menginstal permata ini ke mesin lokal Anda, jalankan bundle exec rake install . Untuk merilis versi baru, perbarui nomor versi di version.rb , dan kemudian jalankan bundle exec rake release , yang akan membuat tag git untuk versi, Push Git Commits and Tag, dan tekan file .gem ke rubygems.org.
Laporan bug dan permintaan tarik dipersilakan di GitHub di https://github.com/rack-app/rack-app Proyek ini dimaksudkan untuk menjadi ruang yang aman dan ramah untuk kolaborasi, dan kontributor diharapkan untuk mematuhi kontributor Kode Perilaku Perjanjian.
Rack :: App adalah perangkat lunak gratis yang dirilis di bawah lisensi V2 Lisensi Apache. Logo ini dirancang oleh Zsófia Gebauer. Ini adalah hak cipta © 2015 Adam Luzsi. Semua hak dilindungi undang -undang.