public
Description: Rack middleware for request rewriting
Homepage:
Clone URL: git://github.com/joshbuddy/rack-rewrite.git
rack-rewrite / README.rdoc
100644 49 lines (37 sloc) 1.286 kb

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