rack-rewrite
Rack middleware for request rewriting.
Example
use Rack::Rewrite do
on :method => 'get' do
# When it sees /api or /test, it calls whatever is in the act block
#
on :path_info => %r{/(api|test)} do
act { puts "hey way to go!" }
pass
end
# When it sees /google, it makes a redirect to google with the value of the query string as the search
#
on :path_info => %r{/google.*} do
redirect { "http://google.com/search?q=#{CGI.escape(query_string)}" }
end
# If a PATH_INFO starts with /valid_place, it strips it off and keeps on truckin'
#
on :path_info => %r{/valid_place/.*} do
set(:path_info) { path_info[%r{/valid_place(/.*)}, 1] }
pass
end
# If a PATH_INFO starts with /hello_kitty, add a kitty header equal to your query string
#
on :path_info => %r{/hello_kitty/.*} do
act { header['kitty'] = query_string }
pass
end
# If the request has a has a param of kitten=cute or kitten=happy, lets log it and pass it on!
#
on :params => {:kitten => /cute|happy/} do
act { log('what a nice cat') }
pass
end
fail
end
end