
Assistente de Rack-App Gpt
rack-app é uma estrutura minimalista da Web que se concentra na simplicidade e manutenção. A estrutura deve ser usada por desenvolvedores da Web experientes.
rack-app se concentra em manter as dependências o mínimo possível, permitindo a gravação de aplicativos funcionais e minimalistas, que não farão nada mais do que você definiu.
O roteamento usa uma árvore de prefixo, adicionando assim um grande número de pontos de extremidade da API não afetará o tempo de pesquisa de roteamento.
Foi inspirado por Sinatra , grape e rack . É usado na produção, alimentando as APIs de back-end em execução na nuvem pública.
A estrutura é considerada estável. Não tenho o plano de apresentar a estrutura sem casos de uso da vida real, pois a maioria dos casos de borda personalizada pode ser resolvida com a composição.
Na próxima vez, ele receberá mais atualizações, quando o rack fornecer um suporte finalizado para o HTTP2.
Se você tiver um problema, verifico semanalmente a guia Problemas, responde e responda ou implemento uma correção para ele.
Como a única dependência da estrutura é a jóia rack , não preciso atualizar a base de código com muita frequência.
Saúde e codificação feliz!
Adicione esta linha ao GemFile do seu aplicativo:
gem 'rack-app'E depois execute:
$ bundle
Ou instale você mesmo como:
$ gem install rack-app
Sim, ele já está alimentando Micro Services Hosted Hosted.
O roteador do Rack-App depende de uma estrutura de árvore que faz uso pesado de prefixos comuns , é basicamente uma árvore de prefixo compacta (ou apenas a árvore da radix ). Os nós com um prefixo comum também compartilham um pai comum.
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
endVocê pode acessar o Rack :: Request com o método de solicitação e o rack :: Resposta como um método de resposta.
Por padrão, se você não escrever nada para a resposta 'corpo', o retorno lógico do bloco de endpoint será usado
Se você não se importa de estender sua lista de dependência, poderá usar a extensão FRONT_END para criar aplicativos da Web baseados em modelos.
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 exemplo espera que uma pasta "aplicativo" ao lado do arquivo "app.rb" que incluía modelos usados, como layout.html.erb e index.html.
Para testar, use rack/teste ou o módulo de teste agrupado para gravar teste de unidade para o seu aplicativo 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 oficial como exemplos
Rack :: App Team Github Repositórios
Básico
API autorizada por Escher
Depois de verificar o repositório, execute bin/setup para instalar dependências. Em seguida, execute rake spec para executar os testes. Você também pode executar bin/console para um prompt interativo que permitirá experimentar.
Para instalar esta gema na sua máquina local, execute bundle exec rake install . Para lançar uma nova versão, atualize o número da versão no version.rb e, em seguida, execute bundle exec rake release , que criará uma tag git para a versão, push git cometa e tags e pressionará o arquivo .gem para rubygems.org.
Os relatórios de bugs e solicitações de tração são bem-vindos no github em https://github.com/rack-app/rack-app Este projeto deve ser um espaço seguro e acolhedor para colaboração, e os colaboradores devem aderir ao código de conduta do colaborador.
Rack :: App é software gratuito lançado sob a licença Apache V2 License. O logotipo foi projetado por Zsófia Gebauer. É Copyright © 2015 Adam Luzsi. Todos os direitos reservados.