* 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 “merb_fu”, “>= 1.0″

  • If you want to run your application from a subdirectory, once again, in your init.rb file, add: c[:path_prefix] = “/your_prefix” (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
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 => "http://").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 reset_session 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.