12/23/2010

Rack URLMap

Rack提供簡易routing 功能,能夠不同URL (PATH_INFO, SCRIPT_NAME) 執行不同的middleware。

[code lang="ruby"] app = Rack::Builder.new do use Rack::CommonLogger use Rack::ShowExceptions map '/env' do run Proc.new {|env| [200, {"Content-Type" => "text/html"}, env.inspect]} end map '/' do run lambda {|env| [200, { 'Content-Type' => 'text/plain' }, ["Hello World!"] ] } end map "/lobster" do use Rack::ShowExceptions run Rack::Lobster.new end end Rack::Handler::WEBrick.run app, : Port => 9292 [/code]

或者利用 Rack::URLMap 組出 url path 對映 app之關系

[code lang="ruby"] hello_app = lambda {|env| [200, { 'Content-Type' => 'text/plain' }, ["Hello World!"] ] } env_app = Proc.new {|env| [200, {"Content-Type" => "text/html"}, env.inspect]} lobster_app = Rack::Lobster.new app = Rack::Builder.new do use Rack::CommonLogger use Rack::ShowExceptions run Rack::URLMap.new '/' => hello_app, '/env' => env_app, '/lobster' => lobster_app end Rack::Handler::WEBrick.run app, : Port => 9292 [/code]

Rack 提供urlmap算是簡易的routing功能, 通常都是Framework自行撰寫routing機制,內建Rack Routing僅限單純應用。

No comments:

Post a Comment