Class: Merb::Rack::Console

Inherits:
Object show all
Defined in:
lib/merb-core/rack/adapter/irb.rb

Instance Method Summary collapse

Instance Method Details

#close_sandbox!Object

Ends a sandboxed session (delegates to any Merb::Orms::* modules).

An ORM should implement Merb::Orms::MyOrm#close_sandbox! to support this. Usually this involves rolling back a transaction. :api: public


155
156
157
158
# File 'lib/merb-core/rack/adapter/irb.rb', line 155

def close_sandbox!
  orm_modules.each { |orm| orm.close_sandbox! if orm.respond_to?(:close_sandbox!) }
  puts "Modifications have been rolled back"
end

#open_sandbox!Object

Starts a sandboxed session (delegates to any Merb::Orms::* modules).

An ORM should implement Merb::Orms::MyOrm#open_sandbox! to support this. Usually this involves starting a transaction. :api: public


144
145
146
147
148
# File 'lib/merb-core/rack/adapter/irb.rb', line 144

def open_sandbox!
  puts "Loading #{Merb.environment} environment in sandbox (Merb #{Merb::VERSION})"
  puts "Any modifications you make will be rolled back on exit"
  orm_modules.each { |orm| orm.open_sandbox! if orm.respond_to?(:open_sandbox!) }
end

#reload!Object

Reloads classes using Merb::BootLoader::ReloadClasses. :api: public


99
100
101
# File 'lib/merb-core/rack/adapter/irb.rb', line 99

def reload!
  Merb::BootLoader::ReloadClasses.reload!
end

#resource(*args) ⇒ Object

Generates a URL for a single or nested resource.

Parameters

resources<Symbol,Object>

The resources for which the URL

should be generated. These resources should be specified
in the router.rb file using #resources and #resource.
options<Hash>

Any extra parameters that are needed to

generate the URL.

Returns

String

The generated URL.

Examples

Merb::Router.prepare do

resources :users do
  resources :comments
end

end

resource(:users) # => /users resource(@user) # => /users/10 resource(@user, :comments) # => /users/10/comments resource(@user, @comment) # => /users/10/comments/15 resource(:users, :new) # => /users/new resource(:@user, :edit) # => /users/10/edit

:api: public


92
93
94
95
# File 'lib/merb-core/rack/adapter/irb.rb', line 92

def resource(*args)
  args << {}
  Merb::Router.resource(*args)
end

#route_to(url, method = :get, env_overrides = {}) ⇒ Object

Returns a request for a specific URL and method. :api: public


105
106
107
108
109
# File 'lib/merb-core/rack/adapter/irb.rb', line 105

def route_to(url, method = :get, env_overrides = {})
  request_env = ::Rack::MockRequest.env_for(url)
  request_env["REQUEST_METHOD"] = method.to_s
  Merb::Router.route_for(Merb::Request.new(request_env.merge(env_overrides)))
end

#show_routesObject

Prints all routes for the application. :api: public


113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/merb-core/rack/adapter/irb.rb', line 113

def show_routes
  seen = []
  unless Merb::Router.named_routes.empty?
    puts "==== Named routes"
    Merb::Router.named_routes.each do |name,route|
      # something weird happens when you combine sprintf and irb
      puts "Helper     : #{name}"
      meth = $1.upcase if route.conditions[:method].to_s =~ /(get|post|put|delete)/
      puts "HTTP method: #{meth || 'GET'}"
      puts "Route      : #{route}"
      puts "Params     : #{route.params.inspect}"
      puts
      seen << route
    end
  end
  puts "==== Anonymous routes"
  (Merb::Router.routes - seen).each do |route|
    meth = $1.upcase if route.conditions[:method].to_s =~ /(get|post|put|delete)/
    puts "HTTP method: #{meth || 'GET'}"
    puts "Route      : #{route}"
    puts "Params     : #{route.params.inspect}"
    puts
  end
  nil
end

#trace_log!Object

Explictly show logger output during IRB session :api: public


162
163
164
# File 'lib/merb-core/rack/adapter/irb.rb', line 162

def trace_log!
  Merb.logger.auto_flush = true
end

#url(name, *args) ⇒ Object

There are three possible ways to use this method. First, if you have a named route, you can specify the route as the first parameter as a symbol and any paramters in a hash. Second, you can generate the default route by just passing the params hash, just passing the params hash. Finally, you can use the anonymous parameters. This allows you to specify the parameters to a named route in the order they appear in the router.

Parameters(Named Route)

name<Symbol>

The name of the route.

args<Hash>

Parameters for the route generation.

Parameters(Default Route)

args<Hash>

Parameters for the route generation. This route will use the default route.

Parameters(Anonymous Parameters)

name<Symbol>

The name of the route.

args<Array>

An array of anonymous parameters to generate the route with. These parameters are assigned to the route parameters in the order that they are passed.

Returns

String

The generated URL.

Examples

Named Route

Merb::Router.prepare do

match("/articles/:title").to(:controller => :articles, :action => :show).name("articles")

end

url(:articles, :title => “new_article”)

Default Route

Merb::Router.prepare do

default_routes

end

url(:controller => “articles”, :action => “new”)

Anonymous Paramters

Merb::Router.prepare do

match("/articles/:year/:month/:title").to(:controller => :articles, :action => :show).name("articles")

end

url(:articles, 2008, 10, “test_article”)

:api: public


58
59
60
61
# File 'lib/merb-core/rack/adapter/irb.rb', line 58

def url(name, *args)
  args << {}
  Merb::Router.url(name, *args)
end