08 Dec 2008
•
2 min read
Merb 1.0.4
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.
Have a happy week!