
Asistente de GPT de rack-app
rack-app es un marco web minimalista que se centra en la simplicidad y la mantenibilidad. El marco está destinado a ser utilizado por desarrolladores web experimentados.
rack-app Centrarse en mantener las dependencias lo menos posible, al tiempo que permite escribir aplicaciones basadas en rack funcionales y minimalistas, que no harán nada más de lo que definió.
El enrutamiento utiliza un árbol de prefijo, por lo que agregar una gran cantidad de puntos finales de API no afectará el tiempo de búsqueda de enrutamiento.
Fue inspirado por Sinatra , grape y rack . Se usa en la producción, alimentando las API de fondo que se ejecutan en la nube pública.
El marco se considera estable. No tengo el plan para presentar el marco sin casos de uso de la vida real, ya que la mayoría de los casos de borde personalizado se pueden resolver con composición.
La próxima vez recibirá más actualizaciones, cuando Rack proporciona un soporte finalizado para HTTP2.
Si tiene un problema, reviso semanalmente la pestaña Problemas, respondo y respondo, o implemento una solución para ello.
Dado que la única dependencia del marco es la gema rack , no tengo que actualizar la base de código con demasiada frecuencia.
¡Saludos y feliz codificación!
Agregue esta línea al archivo gem de su aplicación:
gem 'rack-app'Y luego ejecutar:
$ bundle
O instálelo usted mismo como:
$ gem install rack-app
Sí, ya está impulsando a Heroku los micro-servicios.
El enrutador de Rack-App se basa en una estructura de árbol que hace un uso intensivo de prefijos comunes , es básicamente un árbol de prefijo compacto (o simplemente un árbol de radix ). Los nodos con un prefijo común también comparten un padre común.
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
endPuede acceder a rack :: solicitud con el método de solicitud y rack :: respuesta como método de respuesta.
Por defecto, si no escribe nada a la respuesta 'cuerpo', se utilizará el retorno de la lógica del bloque de punto final se utilizará
Si no le importa extender su lista de dependencias, puede usar la extensión front_end para crear aplicaciones web basadas en plantillas.
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
endEste ejemplo espera una carpeta "Aplicación" junto al archivo "App.RB" que incluía plantillas que se utilizan, como LightOut.html.erb y index.html.
Para pruebas, use rack/prueba o el módulo de prueba agrupado para escribir una prueba unitaria para su aplicación 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
Sitio web oficial Cómo ejemplos
RACK :: Repositorios GitHub Team GitHub
Básico
API autorizada de Escher
Después de revisar el repositorio, ejecute bin/setup para instalar dependencias. Luego, ejecute rake spec para ejecutar las pruebas. También puede ejecutar bin/console para un mensaje interactivo que le permitirá experimentar.
Para instalar esta gema en su máquina local, ejecute bundle exec rake install . Para lanzar una nueva versión, actualice el número de versión en version.rb y luego ejecute bundle exec rake release , que creará una etiqueta GIT para la versión, Push Git Commits and Tags, y empuje el archivo .gem a rubygems.org.
Los informes de errores y las solicitudes de extracción son bienvenidas en GitHub en https://github.com/rack-app/rack-app Este proyecto está destinado a ser un espacio seguro y acogedor para la colaboración, y se espera que los contribuyentes se adhieran al código de conducta del pacto contribuyente.
RACK :: APP es un software gratuito lanzado bajo la licencia V2 de la licencia Apache. El logotipo fue diseñado por Zsófia Gebauer. Es Copyright © 2015 Adam Luzsi. Reservados todos los derechos.