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.
@gmcintire Passenger may be setting GEM_HOME differently -- can you print out ENV["GEM_HOME"] in passenger?
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