Posts Tagged ‘merb’

Very Flat Merb Projects, New in 0.9.0

By Loren Segal on February 15th, 2008 at 6:41 PM

Tags: , , , , , , ,

Man oh man am I happy. I recently discovered Merb, a more lightweight thread-safe alternative to Ruby on Rails. I might devote an entire post to this framework because there’s a lot to be said, but I want to get this off my chest.

I need a mini-framework

I’ve been looking at all these different frameworks to find something that can run more efficiently on my tiny little ghetto server, because I don’t have the resources to run these memory hogging rails apps for my relatively tiny websites. I really need a small framework for the kind of apps I make. You know, pull out a quick blog, wiki, or other, with no DB access at all. What about Camping? No, that’s a little too small. I settled on Merb. Merb is considerably bulkier than Camping, and for a bit I was wondering if even it was too much, until now…

The Merb guys have just released a developer version 0.9.0 which has some neat changes, but what definitely caught my eye was (from the last few lines of the post) the –very-flat option for the application template generator. No need to explain, I’ll just show you how awesome it is:

titanium:merb jinx$ merb-gen blog --very-flat
Fri, 15 Feb 2008 22:57:23 GMT ~ Not Using Sessions
RubiGen::Scripts::Generate
      create  /blog.rb
      create  /README.txt

Now, if we load up the one file created for our project:

Merb::Router.prepare do |r|
  r.match('/').to(:controller => 'blog', :action =>'index')
end
 
class Blog < Merb::Controller
  def index
    "hi"
  end
end
 
Merb::Config.use { |c|
  c[:framework]           = {},
  c[:session_store]       = 'none',
  c[:exception_details]   = true
}

BAM!

Imagine that? That’s all there is to our app. That’s the entire source code– program logic, configuration and support files. It’s fully executable as its own application with the command merb -I blog. Microframework indeed. Granted, it’s pulling all of the ‘merb-core‘ gem, but that’s pretty small. This code is super portable (in the put-it-on-a-usb-key sense, not the platform-to-platform sense) and really quick to develop with. Step aside, Camping.

Granted, I don’t think I’ll use this method of development since it’s the same reason I won’t use Camping, but it’s nice to know I can drop down to the really simple level if I need to just prototype one quick "one-button" app and still have room to grow it out. The fact that Merb can actually do this is what’s most mindblowing. It’s a true testament to the modularity and extensibility of the framework’s design. Getting Rails to run without ActiveRecord is a pain enough, let alone pulling out everything but routing and controllers.