Skip to content

Instantly share code, notes, and snippets.

View carllerche's full-sized avatar
😎
working

Carl Lerche carllerche

😎
working
View GitHub Profile
Merb::Router.prepare do |r|
r.match("(:path_account)", :account => "(:path_account|:subdomain)") do |stuff|
end
end
class Application < Merb::Controller
before :login_required
end
class Foo < Application
end
it "allows wrapping of nested routes all having shared argument with PREDEFINED VALUES" do
Merb::Router.prepare do |r|
r.match(/\/?(en|es|fr|be|nl)?/).to(:language => "[1]") do |l|
l.match("/guides/:action/:id").to(:controller => "tour_guides")
end
end
route_to('/se/guides/search/stokholm').should have_route(:controller => 'tour_guides', :action => "search", :id => "stokholm", :language => nil)
end
def match(request)
cached_path = request.path
cached_method = request.method
if (/^\/users(?:\/index)?(?:\.([^\/.,;?]+))?$/ =~ cached_path && ((path1 = $1) || true)) && (cached_method == "get")
[0, {:controller => "users", :format => (path1), :action => "index"}]
elsif (/^\/users(?:\.([^\/.,;?]+))?$/ =~ cached_path && ((path1 = $1) || true)) && (cached_method == "post")
[1, {:controller => "users", :format => (path1), :action => "create"}]
elsif (/^\/users\/new(?:\.([^\/.,;?]+))?$/ =~ cached_path && ((path1 = $1) || true)) && (cached_method == "get")
[2, {:controller => "users", :format => (path1), :action => "new"}]
elsif (/^\/users\/one(?:\.([^\/.,;?]+))?$/ =~ cached_path && ((path1 = $1) || true)) && (cached_method == "get")
#!/usr/bin/env ruby
require 'ostruct'
require "rubygems"
require "rbench"
require File.join(File.dirname(__FILE__), '..', 'lib', 'router')
PATH1 = "/users/1"
PATH2 = "/articles/1"
STRING = "/users/1".freeze
describe "a resource with extra actions" do
collection = { :one => :get, :two => :post, :three => :put, :four => :delete }
member = { :five => :get, :six => :post, :seven => :put, :eight => :delete }
before(:each) do
Router.prepare do |r|
r.resources :users, :collection => collection, :member => member
end
end
Merb::Router.prepare do |r|
r.domain(":account.domain.com") do |account|
r.resources :users
end
end
# currently on foo.domain.com
url(:users, :account => "foo") # => /users
Router.prepare do |r|
r.resources :user do |u|
u.resources :comments
end
r.resources :articles do |u|
u.resouces :comments
end
r.resources :comments
carl-lerches-mac-pro:router carllerche$ rake specs:old
(in /Users/carllerche/Developer/Source/router)
The default routes
- should match /foo to the Foo controller and index action
- should match /foo/bar to the Foo controller and the bar action
- should match /foo/bar/12 to the Foo controller, the bar action, and id of 12
Deferred routes
- should match routes based on the incoming params
Merb::Router.prepare do |r|
r.resources :users do |u|
u.resources :comments
end
end
# --- Will use @comment.id and @comment.user_id
url(:user_comment, @comment) # => /users/123/comments/321
# --- Knows the order of arguments in the route and assigns values accordingly
url(:user_comment, @comment.user, @comment) # => /users/123/comments/321