
ラックアプリGPTアシスタント
rack-appシンプルさと保守性に焦点を当てたミニマリストのWebフレームワークです。フレームワークは、ベテランのWeb開発者が使用することを目的としています。
rack-app依存関係を可能な限り少ない維持に焦点を当て、機能的でミニマリストのラックベースのアプリケーションを作成することを許可します。
ルーティングはプレフィックスツリーを使用するため、多数のAPIエンドポイントを追加することはルーティングルックアップ時間に影響しません。
それはSinatra 、 grape 、 rackに刺激されました。これは、生産に使用され、パブリッククラウドで実行されているバックエンドAPIの動力を供給しています。
フレームワークは安定していると見なされます。ほとんどのカスタムエッジケースは構成で解決できるため、実際の使用ケースなしではフレームワークをクリープする計画はありません。
ラックがHTTP2の最終サポートを提供する場合、次回はさらに更新を受けます。
問題がある場合は、[問題]タブを毎週確認し、回答して返信するか、修正を実装します。
フレームワークの唯一の依存関係はrackジェムであるため、コードベースを頻繁に更新する必要はありません。
乾杯と幸せなコーディング!
この行をアプリケーションのGemfileに追加します。
gem 'rack-app'そして実行してください:
$ bundle
または、自分でインストールします:
$ gem install rack-app
はい、それはすでにHerokuホストのマイクロサービスに動力を与えています。
ラックアプリのルーターは、一般的な接頭辞を使用するツリー構造に依存しています。これは、基本的にコンパクトなプレフィックスツリー(または単なる基数ツリー)です。共通のプレフィックスを持つノードも共通の親を共有します。
ダニエル・ナジ
ダニエル・シュピジャック
ジェレミー・エヴァンス
デビッド・ブッシュ
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リクエストメソッドを使用してラック::リクエストにアクセスし、応答方法としてラック::応答を使用できます。
デフォルトでは、「ボディ」という応答に何も書かない場合、エンドポイントブロックロジックリターンが使用されます
依存関係リストの拡張を気にしない場合は、FRONT_END拡張子を使用してテンプレートベースのWebアプリケーションを作成できます。
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この例では、layout.html.erbやindex.htmlなどのテンプレートを含む「app.rb」ファイルの横にある「アプリ」フォルダーが期待されています。
テストには、ラック/テストを使用するか、ラックアプリケーションのユニットテストを作成するためのバンドルテストモジュールを使用してください
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
公式ウェブサイトの例の方法
ラック::アプリチームGithubリポジトリ
基本
Escher認定API
リポジトリをチェックアウトした後、 bin/setupを実行して依存関係をインストールします。次に、 rake specを実行してテストを実行します。また、実験を可能にするインタラクティブなプロンプトのbin/consoleを実行することもできます。
この宝石をローカルマシンにインストールするには、 bundle exec rake install実行します。新しいバージョンをリリースするには、 version.rbのバージョン番号を更新してから、バージョンbundle exec rake release gitタグを作成し、gitコミットとタグをプッシュし、 .gemファイルをRubygems.orgにプッシュします。
https://github.com/rack-app/rack-appのGithubでバグレポートとプルリクエストは大歓迎です。
Rack :: Appは、ApacheライセンスV2ライセンスの下でリリースされたフリーソフトウェアです。ロゴはZsófiaGebauerによって設計されました。著作権©2015 Adam Luzsi。無断転載を禁じます。