3. What is merb?
• MVC Framework.
• Similar to Rails.
• Lightweight, extensible, fast.
4. Merb Ideology
• Hacker-friendly.
• Core should be small, plugins bountiful.
• Code should be as simple as possible.
• Code should not be “magical.”
5. Merb is like rails
• Application structure is very similar
• Can use ActiveRecord
6. What does merb-core include?
• rack-based request handling
• session handling
• before / after filters
• layouts / views with erb
• routing
7. What does merb-core include?
• gem-based plugins
• mailers
• partials
• exceptions
• generator for controllers, and models
(integrates with your chosen ORM).
8. What is elsewhere?
• an ORM (can use ActiveRecord,
DataMapper, Sequel)
• form helpers such as form_for
(merb_helper)
• ActiveSupport and all those little ruby
extensions (extlib?)
9. What is elsewhere?
• flash (merb_has_flash and
redirect :message)
• redirect(quot;/posts/34quot;, :message =>
{ :notice => 'Post updated successfully!' })
• scaffolding
• caching (merb-cache)
• ajax library (merb_jquery)
11. What do we need
helper functions for?
• Why not just use HTML for templating
instead of all those helper functions?
• Why not just use JQuery for AJAX instead
of all those AJAX helper functions?
12. Thread-safety
• Merb is thread-safe now.
• Rails will be thread-safe in 2.2.
• What does that mean? http://
blog.headius.com/2008/08/qa-what-thread-
safe-rails-means.html
13. Considerations
• Does your app block?
• File uploads
• Remote HTTP calls
• Facebook app: 1-2s wait time?
• Do you have native threads?
• JRuby / C ruby differences
14. Instances Required
Merb Rails
C MRI, one core, no blocking 1 1
C MRI, one core, 80% blocking 1 5
C MRI, two cores, no blocking 2 2
C MRI, two core, 80% blocking 2 10
Jruby, one core, no blocking 1 1
Jruby, one core, 80% blocking 1 5
Jruby, two cores, no blocking 1 2
Jruby, two core, 80% blocking 1 10
Jruby, 16 cores, 80% blocking 1 80
22. What is development
like?
• There are no books... yet.
• The codebase is changing.
• Smaller userbase than rails.
• If you are doing anything weird, be prepared
to corepatch!
26. Speed Comparison
• Test with simple merb / rails apps using ActiveRecord
• Tests using ab -n 10000
• Testing serially, not concurrently.
• Tested on this MacBook Pro
27. C MRI Mongrel
• Merb: 170 requests / second
• Rails: 32 requests / second
31. What is the deal?
• JRuby thread pool, instead of thread
instantiation?
• Default session handling?
• Overspinning threads in app server?
• Incorrect JIT compilation?
32. Tomcat Memory Usage
• Merb: ~30 MB for all threads
• Rails: ~60 MB+ additional memory per
process
• (Tested on Tomcat)
33. Was it worth it?
• Thread-safety is a minor advantage when it
comes to file uploads.
• Merb uses less memory.
• Merb is slower than rails.
• Merb may die on string thread-safe bug
until JRuby / Merb team fix it.
35. Consider merb if...
• you’re writing a small tool.
• you have limited memory requirements.
• you like trying new ORMs.
• you need fast performance (and you’ve
figured out why it runs so slow on JRuby).
• you like hacking about in frameworks.
36. Upcoming
• Merb 1.0 is released Oct 11-12.
• MerbCamp is in San Diego Oct 11-12.
• Merb in Action book (2009?).
37. Available
• I’m available for contracts again. Talk to me
here, at 408-646-2240 or
paulboone@mindbucket.com.
• http://www.mindbucket.com/