
App-App GPT Assistant
rack-app -это минималистская веб-структура, которая фокусируется на простоте и обслуживаемости. Структура предназначена для использования опытными веб -разработчиками.
rack-app сосредоточен на том, чтобы сохранить зависимости как можно меньше, позволяя писать функциональные и минималистские приложения на основе стоек, которые не будут делать ничего больше, чем то, что вы определили.
Маршрутизация использует дерево префикса, таким образом, добавление большого количества конечных точек API не повлияет на время поиска маршрутизации.
Это было вдохновлено Sinatra , grape и rack . Он используется в производстве, включает в себя API-интерфейсы, работающие в общедоступном облаке.
Структура считается стабильной. У меня нет плана по созданию Creep Framework без реальных случаев использования, поскольку большинство пользовательских случаев краев могут быть разрешены с помощью композиции.
В следующий раз, когда он получит дополнительные обновления, когда Rack обеспечивает окончательную поддержку HTTP2.
Если у вас есть проблема, я еженедельно проверяю вкладку «Проблемы», «Ответить» и «Ответить», или реализую это исправление.
Поскольку единственная зависимость фреймворта - это rack камень, мне не нужно слишком часто обновлять кодовую базу.
Приветствия и счастливое кодирование!
Добавьте эту строку в Gemfile вашего приложения:
gem 'rack-app'А затем выполнить:
$ bundle
Или установите его самостоятельно как:
$ gem install rack-app
Да, это уже питает Heroku, размещенные на микро-сервисах.
Маршрутизатор Rack-App опирается на структуру дерева, которая использует общие префиксы , это в основном компактное дерево префикса (или просто дерево Radix ). Узлы с общим префиксом также имеют общего родителя.
Даниэль Надь
Даниэль Шписджак
Джереми Эванс
Дэвид Буш
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
endВы можете получить доступ к Rack :: Запрос с помощью метода запроса и rack :: response в качестве метода ответа.
По умолчанию, если вы ничего не пишете в ответ «корпус»
Если вы не против расширить свой список зависимостей, вы можете использовать расширение Front_end для создания веб-приложений на основе шаблонов.
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
endЭтот пример ожидает папку «приложения» рядом с файлом «app.rb», который включал используемые шаблоны, такие как Mayout.html.erb и index.html.
Для тестирования используйте стойку/тест или модуль тестирования в комплекте
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
Официальный сайт, как сделать примеры
Rack :: Приложения команда GitHub Repositories
Базовый
Эшер уполномочен API
После проверки репо, запустите bin/setup для установки зависимостей. Затем запустите rake spec , чтобы запустить тесты. Вы также можете запустить bin/console для интерактивной подсказки, которая позволит вам экспериментировать.
Чтобы установить этот драгоценный камень на локальную машину, запустите bundle exec rake install . bundle exec rake release выпустить новую версию, обновите номер версии .gem version.rb .
Отчеты об ошибках и запросы на привлечение приветствуются на GitHub по адресу https://github.com/rack-app/rack-app. Этот проект предназначен для безопасного, гостеприимного пространства для сотрудничества, и участники должны придерживаться кодекса поведения участника.
Rack :: App - это бесплатное программное обеспечение, выпущенное по лицензии Apache V2. Логотип был спроектирован Zsófia Gebauer. Это Copyright © 2015 Adam Luzsi. Все права защищены.