Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

sinatra-advanced-routes

Makes routes first class objects in Sinatra.

Build Status Gem Version Code Climate

Check out sinatra-contrib you are looking for other fancy Sinatra extensions.

Installation

# Gemfile
gem 'sinatra-advanced-routes', :require => 'sinatra/advanced_routes'

If you are serving a modular application, register the extension manually :

require 'sinatra/base'
require 'sinatra/advanced_routes'

class Foo < Sinatra::Base
  register Sinatra::AdvancedRoutes
end

Examples

Route manipulation

require 'sinatra'
require 'sinatra/advanced_routes'

admin_route = get '/admin' do
  administrate_stuff
end

before do
  # Let's deactivate the route if we have no password file.
  if File.exists? 'admin_password' then admin_route.activate
  else admin_route.deactivate 
  end
end

first_route = get '/:name' do
  # stuff
end

other_route = get '/foo_:name' do
  # other stuff
end

# Unfortunatly first_route will catch all the requests other_route would
# have gotten, since it has been defined first. But wait, we can fix this!
other_route.promote

Route inspection

require 'some_sinatra_app'

SomeSinatraApp.each_route do |route|
  puts '-' * 20
  puts route.app.name   # "SomeSinatraApp"
  puts route.path       # that's the path given as argument to get and akin
  puts route.verb       # get / head / post / put / delete
  puts route.file       # "some_sinatra_app.rb" or something
  puts route.line       # the line number of the get/post/... statement
  puts route.pattern    # that's the pattern internally used by sinatra
  puts route.keys       # keys given when route was defined
  puts route.conditions # conditions given when route was defined
  puts route.block      # the route's closure
end

Some of that fields (like conditions or pattern) can be changed, which will take immediate effect on the routing.

About

Make Sinatra routes first class objects (extracted from BigBand).

Resources

License

Packages

No packages published

Languages

You can’t perform that action at this time.