
Rack-App GPT-Assistent
rack-app ist ein minimalistisches Web-Framework, das sich auf Einfachheit und Wartbarkeit konzentriert. Das Framework soll von erfahrenen Webentwicklern verwendet werden.
rack-app konzentrieren sich darauf, die Abhängigkeiten so wenig wie möglich zu halten und gleichzeitig funktionale und minimalistische Rack-basierte Anwendungen zu ermöglichen, die nichts anderes tun als das, was Sie definiert haben.
Das Routing verwendet einen Präfixbaum, wodurch eine große Anzahl von API -Endpunkten hinzugefügt wird, die sich auf die Routing -Lookup -Zeit auswirken.
Es wurde von Sinatra , grape und rack inspiriert. Es wird in der Produktion verwendet, um Back-End-APIs auf der öffentlichen Cloud zu betreiben.
Der Rahmen wird als stabil angesehen. Ich habe nicht den Plan, das Framework ohne reale Anwendungskräfte zu kriechen, da die meisten kundenspezifischen Fälle mit Zusammensetzung aufgelöst werden können.
Wenn es das nächste Mal weitere Aktualisierungen erhält, bietet Rack eine endgültige Unterstützung für HTTP2.
Wenn Sie ein Problem haben, überprüfe ich wöchentlich die Registerkarte "Problemen", beantworten und antworten Sie oder implementieren Sie eine Lösung dafür.
Da die einzige Abhängigkeit des Frameworks das rack -Juwel ist, muss ich die Codebasis nicht zu oft aktualisieren.
Prost und fröhliche Codierung!
Fügen Sie diese Zeile der GemFile Ihrer Anwendung hinzu:
gem 'rack-app'Und dann ausführen:
$ bundle
Oder installieren Sie es selbst als:
$ gem install rack-app
Ja, es betreibt bereits Heroku-Host-Micro-Services.
Der Router von Rack-App basiert auf einer Baumstruktur, die häufig vorhandene Präfixe verwendet. Es handelt sich im Grunde genommen um einen kompakten Präfixbaum (oder nur ein Radixbaum ). Knoten mit einem gemeinsamen Präfix teilen sich auch einen gemeinsamen Elternteil.
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
endSie können mit der Anforderungsmethode und der Reaktion als Antwortmethode auf Rack :: Anfrage zugreifen.
Wenn Sie standardmäßig nichts in die Antwort 'Körper' schreiben, wird die Endpoint -Block -Logikrendite verwendet
Wenn es Ihnen nichts ausmacht, Ihre Abhängigkeitsliste zu erweitern, können Sie die Erweiterung von Front_end zum Erstellen von vorlagenbasierten Webanwendungen verwenden.
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
endIn diesem Beispiel wird ein "App" -Fordner neben der Datei "app.rb" erwartet, in der Vorlagen wie Layout.html.erb und Index.html enthalten sind.
Zum Testen verwenden Sie Rack/Test oder das gebündelte Testmodul zum Schreiben von Unit -Test für Ihre Rack -Anwendung
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
Offizielle Website wie Beispiele
Rack :: App -Team Github Repositories
Basic
Escher autorisierte API
Führen Sie bin/setup nach dem Auschecken des Repo aus, um Abhängigkeiten zu installieren. Führen Sie dann rake spec aus, um die Tests auszuführen. Sie können auch bin/console für eine interaktive Eingabeaufforderung ausführen, mit der Sie experimentieren können.
Um dieses Juwel auf Ihrem lokalen Computer zu installieren, führen Sie bundle exec rake install aus. Um eine neue Version zu veröffentlichen, aktualisieren Sie die Versionsnummer in version.rb und führen Sie bundle exec rake release aus, die ein Git -Tag für die Version erstellt, Git Commits und Tags drücken und die .gem -Datei auf rubygemems.org weitergeben.
Fehlerberichte und Pull-Anfragen sind auf Github unter https://github.com/rack-app/rack-app willkommen. Dieses Projekt soll ein sicherer, einladender Raum für die Zusammenarbeit sein, und die Mitwirkenden sollen sich an den Verhaltenskodex des Mitwirkenden halten.
Rack :: App ist kostenlose Software, die unter der Apache -Lizenz V2 -Lizenz veröffentlicht wurde. Das Logo wurde von Zsófia Gebauer entworfen. Es ist Copyright © 2015 Adam Luzsi. Alle Rechte vorbehalten.