Merb Tips 2
* this content is now outdated and only applied to Merb 0.9*
I the previous post I covered few useful tips for Merb 0.9. The good news is that Merb should get its wiki setup over the week end!
Here is another batch of hopefully useful tips:
In init.rb, you can define a dependency and specify a version number: _dependency “merbfu”, “>= 1.0”
If you want to run your application from a subdirectory, once again, in your init.rb file, add: _c[:path_prefix] = “/yourprefix” (note, that you can also do that in a specific environment file.)
You feel like limiting a route to a specific request such as a DELETE? In your router.rb file add the following:
1 2
r.match(“/:bucket_id“, :method => :delete).to(:controller => “buckets“, :action => “destroy“)
Since we are talking about routes, what about an iPhone only route?
1 2
r.match(%r[^/(.+)], :user_agent => /iPhone/).to(:controller => “mobile“, :title => “Welcome Apple FanBoy“, :action => “show“)
what about an admin section for my blogposts?
1 2 3 4
r.match(‘/admin‘) do |admin| admin.resources :blogposts end
To finish with the routes, look at the following merb-core spec
1 2 3 4 5 6 7 8 9
it “should allow you to restrict routes based on protocol“ do Merb::Router.prepare do |r| r.match(:protocol => “https://“).to(:controller => “foo“, :action => “bar“) r.default_routes end route_to(“/foo/bar“).should have_route(:controller => “foo“, :action => “bar“) route_to(“/boo/hoo“, :protocol => “https://“).should have_route(:controller => “boo“, :action => “hoo“) end
You can set custom routes to only work when connected via SSL, that’s just really nice!
Other quick tip. Last time we saw how to install locally all the required gems. Well, you can also freeze merb by doing:
1 2
merb-gen frozen-merb
Another common IRC question, how do I use Merb’s logger. It’s really easy:
1 2
Merb.logger.info(‘our stuff‘)
Where info is the debugging level you want to send your message to.
- Finally, today in IRC a Rails user asked how reset a session in Merb. Rails has a _resetsession method that resets the session by clearing out all the objects stored within and initializing a new session object. Merb simply uses a hash to store sessions, so session.clear will do it ;)
Feel free to add a comment with your Merb tips or leave a question regarding something you can’t seem to be able to do with Merb.