
うん! Mrubyで迅速に棚アプリケーションを作成するためのDSLです。
# mrblib/your-mrbgem.rb
extend Yeah :: DSL | extend Yeah :: DSL
|
set port : 3000 | opt ( :port ) { | port | set port : port }
|
get '/hi/{name}' do | name | | get '/hi' do
"Hi #{ name } " | "Hi #{ params [ 'name' ] . join ( ' and ' ) } "
end | end $ your-mrbgem & | $ your-mrbgem --port 8080 &
Starting application at http://localhost:3000 | Starting application at http://localhost:8080
|
$ curl ' localhost:3000/hi/Ben ' | $ curl ' localhost:8080/hi?name=Tom&name=Jerry '
Hi Ben | Hi Tom and Jerry以下の行をbuild_config.rbに追加します:
MRuby :: Build . new do | conf |
# ... (snip) ...
conf . gem 'mruby-yeah'
endまたは、この行をaplicationのmrbgem.rakeに追加します:
MRuby :: Gem :: Specification . new ( 'your-mrbgem' ) do | spec |
# ... (snap) ...
spec . add_dependency 'mruby-yeah'
end ええ!、ルートは、URLマッチングパターンとペアになったHTTPメソッドです。各ルートはブロックに関連付けられています。
post '/' do
.. create something ..
endルートは、定義されている順序で一致します。リクエストに一致する最初のルートが呼び出されます。
トレーリングスラッシュのあるルートは、以下のルートと違いはありません。
get '/foo' do
# Does match "GET /foo/"
end rootを使用して、デフォルトのエントリポイントを指定します。
# Redirect "GET /" to "GET /public/index.html"
root '/public/index.html'ルートパターンには、 paramsハッシュを介してアクセス可能な名前のパラメーターが含まれます。
# matches "GET /hello/foo" and "GET /hello/bar"
get '/hello/{name}' do
# params[:name] is 'foo' or 'bar'
"Hello #{ params [ :name ] } !"
endまた、ブロックパラメーターを介して名前のパラメーターにアクセスすることもできます。
# matches "GET /hello/foo" and "GET /hello/bar"
get '/hello/{name}' do | name |
# params[:name] is 'foo' or 'bar'
# name stores params[:name]
"Hello #{ name } !"
endルートは、クエリパラメーターを使用する場合もあります。
# matches "GET /posts?title=foo&author=bar"
get '/posts' do
title = params [ 'title' ]
author = params [ 'author' ]
end正規表現と一致するルート:
get '/blog/post/{id:\d+}' do | id |
post = Post . find ( id )
end正規表現のサポートには、mruby-yeahの前にmruby-regexp-pcreをインストールする必要があります!
ルートは、任意のHTTPメソッドと一致するように定義することもできます。
# matches "GET /" and "PUT /" and ...
route '/' , R3 :: ANY do
request [ Shelf :: REQUEST_METHOD ]
end最後になりましたが、追加されたすべてのHTTPルートのリストを取得することは可能です。
routes # => ['GET /blog/post/{id}'] 各ルーティングブロックはYeah::Controllerのインスタンスの範囲内で呼び出されます。このクラスは、 request 、 params 、 logger 、 renderなどのメソッドへのアクセスを提供します。
request棚のリクエストを返し、基本的にはハッシュです。 get '/' do
request # => { 'REQUEST_METHOD' => 'GET', 'REQUEST_PATH' => '/', 'User-Agent' => '...' }
endparamsクエリPARAMSを返し、名前付きURL PARAMS。クエリパラメーションは、文字列キーでアクセスでき、シンボルでパラメーションと名付けられます。 # "GET /blogs/b1/posts/p1?blog_id=b2"
get '/blogs/{blog_id}/posts/{post_id}' do
params # => { blog_id: 'b1', post_id: 'p1' }
endloggerクエリパラメーションを返し、url paramsという名前を付けます。クエリパラメーションは、文字列キーでアクセスでき、シンボルでパラメーションと名付けられます。必要なミドルウェアを含めることを忘れないでください! use Shelf :: Logger
get '/' do
logger # => <Logger:0x007fae54987308>
endrender 、よく形成された棚の応答を返します。この方法により、Varoiusのような呼びかけが許可されています。 get '/500' do | get '/yeah' do
render 500 | render html : '<h1>Yeah!</h1>'
end | end
|
get '/say_hi' do | post '/api/stats' do
render 'Hi' | render json : Stats . create ( params ) , status : 201 , headers : { ... }
end | end
|
get '/say_hello' do | get '/' do
'Hello' | render redirect : 'public/index.html'
end | end ルートを実行するコードブロックの代わりに、コントローラーとRailsに似たアクションも受け入れます。
class GreetingsController < Yeah :: Controller
def greet ( name )
render "Hello #{ name . capitalize } "
end
end
Yeah . application . routes . draw do
get 'greet/{name}' , to : 'greetings#greet'
end
Yeah . application . configure :production do
log_folder '/logs' , 'iss.log' , 'iss.err'
end
Yeah . application . run! port : 3000 うん!小さなオプトパーサーが付いています。各オプションはブロックに関連付けられています。
# matches "your-mrbgem --port 80" or "your-mrbgem -p 80"
opt :port , :int , 8080 do | port |
# port is 80
set :port , port
endOPTSはデフォルト値を持つことができます。ブロックは、いずれにせよ、コマンドライン値、デフォルト値、またはnilのいずれかで呼び出されます。
ただし、1つの指定されたオプションのメタ情報のみを印刷して、サーバーを起動せずに終了することを目的とする場合があります。
# matches "your-mrbgem --version" or "your-mrbgem -v"
opt! :version do
# prints 'v1.0.0' on STDOUT and exit
'v1.0.0'
end あらゆる環境で、スタートアップで一度実行してください。
configure do
# setting one option
set :option , 'value'
# setting multiple options
set a : 1 , b : 2
# same as `set :option, true`
enable :option
# same as `set :option, false`
disable :option
end環境( SHELF_ENV環境変数)がproductionに設定されている場合にのみ実行します。
configure :production do
...
end環境がdevelopmentまたはtestに設定されている場合にのみ実行します。
configure :development , :test do
...
endこれらのオプションにsettingsを介してアクセスできます。
configure do
set :foo , 'bar'
end
get '/' do
settings [ :foo ] # => 'bar'
end うん! Mruby Webフレームワーク用の最小限の標準インターフェイスである棚に乗る。アプリケーション開発者にとってのShelfの最も興味深い機能の1つは、「ミドルウェア」のサポートです。これは、サーバーとアプリケーションの監視および/またはHTTPリクエスト/応答を操作して、さまざまなタイプの共通機能を提供するコンポーネントです。
シナトラは、ビルディングラックミドルウェアパイプラインをトップレベルのuse方法を介してシンチにします。
use Shelf :: CatchError
use MyCustomMiddleware
get '/hello' do
'Hello World'
end useのセマンティクスは、棚::ビルダーDSLで定義されているものと同じです。たとえば、使用方法は、複数/変数のargとブロックを受け入れます。
use Shelf :: Static , urls : [ '/public' ] , root : ENV [ 'DOCUMENT_ROOT' ]シェルフには、ロギング、デバッグ、およびURLルーティングのためのさまざまな標準ミドルウェアで配布されています。うん!これらのコンポーネントの多くは構成に基づいて自動的に使用するため、通常、それらを明示的に使用する必要はありません。
うん!シェルフ互換のWebサーバーで動作します。現在、これらはmruby-simplehttpserverとmruby-heelerです。
set :server , 'simplehttpserver' # => Defaultただし、他のサーバーにハンドラーを登録することは可能です。詳細については、こちらをご覧ください。
リポジトリのクローン:
$ git clone https://github.com/katzer/mruby-yeah.git && cd mruby-yeah/
ソースをコンパイルします:
$ rake compile
テストを実行します:
$ rake test
バグレポートとプルリクエストは、https://github.com/katzer/mruby-yeahのGithubで大歓迎です。
git checkout -b my-new-feature )git commit -am 'Add some feature' )git push origin my-new-feature )MGEMは、MITライセンスの条件の下でオープンソースとして利用できます。
で作られていますか?ライプツィヒで
©2017 Appplant Gmbh