
Assistant Rack-App GPT
rack-app est un cadre Web minimaliste qui se concentre sur la simplicité et la maintenabilité. Le cadre est destiné à être utilisé par les développeurs Web chevronnés.
rack-app se concentre sur le maintien des dépendances le moins possible, tout en permettant à l'écriture d'applications fonctionnelles et minimalistes basées sur des racks, qui ne feront rien de plus que ce que vous avez défini.
Le routage utilise un arbre préfixe, ajoutant ainsi un grand nombre de points de terminaison API n'affectera pas le temps de recherche de routage.
Il était inspiré par Sinatra , grape et rack . Il est utilisé dans la production, alimentant les API back-end fonctionnant sur le cloud public.
Le cadre est considéré comme stable. Je n'ai pas le plan pour comparer le cadre sans cas d'usage réel, car la plupart des cas de bord personnalisés peuvent être résolus avec la composition.
La prochaine fois, il recevra d'autres mises à jour, lorsque Rack fournit une prise en charge finalisée pour HTTP2.
Si vous avez un problème, je vérifie hebdomadaire l'onglet des problèmes, répondez et répondez, ou implémentez un correctif pour cela.
Étant donné que la seule dépendance du cadre est le rack GEM, je n'ai pas à mettre à jour la base de code trop souvent.
Bravo et codage heureux!
Ajoutez cette ligne à Gemfile de votre application:
gem 'rack-app'Puis exécuter:
$ bundle
Ou installez-le vous-même comme:
$ gem install rack-app
Oui, il propose déjà des micro-services hébergés par Heroku.
Le routeur de Rack-App repose sur une structure d'arbre qui utilise fortement les préfixes communs , il s'agit essentiellement d'un arbre de préfixe compact (ou simplement de l'arbre radix ). Les nœuds avec un préfixe commun partagent également un parent commun.
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
endVous pouvez accéder à Rack :: Demande avec la méthode de demande et Rack :: Response comme méthode de réponse.
Par défaut, si vous n'écrivez rien à la réponse «corps», le retour de la logique de blocage de point de terminaison sera utilisé
Si cela ne vous dérange pas d'étendre votre liste de dépendances, vous pouvez utiliser l'extension Front_end pour créer des applications Web basées sur des modèles.
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
endCet exemple s'attend à un dossier "app" à côté du fichier "app.rb" qui incluait des modèles utilisés tels que Layout.html.erb et index.html.
Pour les tests, utilisez un rack / test ou le module de test groupé pour écrire un test unitaire pour votre application de rack
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
Site officiel Comment faire des exemples
RACK :: RepOSTERIES GHIBUB de l'équipe d'applications
Basique
API autorisé Escher
Après avoir vérifié le dépôt, exécutez bin/setup pour installer des dépendances. Ensuite, exécutez rake spec pour exécuter les tests. Vous pouvez également exécuter bin/console pour une invite interactive qui vous permettra d'expérimenter.
Pour installer ce gemme sur votre machine locale, exécutez bundle exec rake install . Pour publier une nouvelle version, mettez à jour le numéro de version dans version.rb , puis exécutez bundle exec rake release , qui créera une balise GIT pour la version, pousse Git Commits and Tags, et poussez le fichier .gem sur RubyGems.org.
Les rapports de bogues et les demandes de traction sont les bienvenus sur GitHub sur https://github.com/rack-app/rack-app Ce projet est destiné à être un espace sûr et accueillant pour la collaboration, et les contributeurs devraient adhérer au code de conduite de la clause des contributeurs.
L'application RACK :: est un logiciel gratuit publié sous la licence APache Licence V2. Le logo a été conçu par Zsófia Gebauer. C'est Copyright © 2015 Adam Luzsi. Tous droits réservés.