Yehuda Katz is a member of the Ruby on Rails core team, and lead developer of the Merb project. He is a member of the jQuery Core Team, and a core contributor to DataMapper. He contributes to many open source projects, like Rubinius and Johnson, and works on some he created himself, like Thor.
Merb 1.0.4
December 8th, 2008
Hey guys!
We just released Merb 1.0.4. Some highlights:
- Update rake install and rake release:merb to work correctly
- Modify cache README to accurately reflect the best practice for setting up the cache
- Set the fatal! warning to print out to STDOUT, assuming STDOUT is the terminal (this was previously causing specs that caused a fatal to silently fail, but print the fatal warning to the log)
- Fix dependencies to remember the backtrace when they were declared, so that failing to load a dependency prints the backtrace at declaration time, rather than printing a backtrace in Merb’s bootloader.
- A boatload of fixes to begin work to make Merb work on 1.9
- Fix code reloading in non-forking environments, including correctly loading files that were loaded as the result of requiring the initial file, as well as correctly handling files that were previously required (i.e. don’t re-require files at load, but do on reload).
- Significantly speed up content negotiation (we were previously using an expensive class-based approach when a simple array approach would do). We have a fairly good test-suite for content-negotiation, but please alert us to any new failures in exotic scenarios.
- In addition, the most expensive part of content-negotiation is now cached, which requires a cache mutex. Given how expensive it was before caching, we felt that adding a mutex was acceptable. If you find that performance under heavy concurrency has degraded, please let us know.
- Modify Merb.logger.* to take a block, which defers the evaluation of the thing to print until it is determined that, in fact, the printing needed to happen. For instance, Merb.logger.debug params.some_expensive_operation becomes Merb.logger.debug { params.some_expensive_operation }, so that some_expensive_operation is not run in production mode.
- last_modified and last_modified= were modified to support DateTimes (coming out of an ORM) in addition to pure times.
- A bug related to JRuby backtraces was only partially resolved in 1.0.3. It is fully resolved in 1.0.4.
- The backtrace checkboxes no longer display in :show_exception_details is false.
- We now support socket files containing %s, which will be replaced with the socket number.
- merb.visit, merb.click_link, and other Webrat helpers are now available in console mode, if webrat is installed. If it is not, we no longer throw an error in any circumstance, but print a warning about unavailable features.
- multipart_request now preserves the session, but with an API change. If you would like to opt into the new feature, require “merb-core/two-oh” in your init.rb. The new multipart_request takes a path, params, and the rack environment, but does not take a block. It returns the same object that request() returns and therefore can be used with the be_successful, etc. rspec matchers. You should use multipart_post and multipart_put in most cases.
- The multipart helper tests were updated to reflect the new changes, and require “merb-core/one-oh”. The specs in spec10 were not modified, and do not opt-in to the new changes.
Merb 1.0.5 will focus exclusively on improving the dependency situation (which we know sucks) and is expected next Monday.
Have a happy week!

Duane Johnson, Posted December 8, 2008, 5:55 pm
Congrats, Yehuda! Merb is awesome. I just introduced it to my computer science class and several people were interested. Keep up the good work :)
John, Posted December 8, 2008, 6:18 pm
Great work – really impressed at the pace of releases lately.
Liam Morley, Posted December 8, 2008, 6:26 pm
Thanks for getting this out! I can confirm that requiring ‘merb-core/two-oh’ in my test.rb was all it took to get my upload-related specs to pass. And 1.0.5 in a week? That’s what I call releasing early and often. Sounds great, thanks for the hard work. :D
nick, Posted December 8, 2008, 7:26 pm
Good on ya! Merb rocks!
Hoornet, Posted December 10, 2008, 6:42 am
Wonderfull, but there are still problems with installation of ri documentation. This is what I got (if it helps):
Successfully installed merb-1.0.4
27 gems installed
Installing ri documentation for addressable-2.0.1…
Installing ri documentation for dm-core-0.9.8…
Installing ri documentation for dm-migrations-0.9.8…
Installing ri documentation for merb-core-1.0.4…
Installing ri documentation for merb_datamapper-1.0.4…
Installing ri documentation for merb-action-args-1.0.4…
Installing ri documentation for merb-assets-1.0.4…
Installing ri documentation for merb-slices-1.0.4…
ERROR: While executing gem … (Errno::EINVAL)
Invalid argument – ./</cdesc-<.yaml