Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Pavel Kunc edited this page Nov 4, 2010 · 1 revision

So, it’s finally here. After taking longer than it probably should have done,
I’m pleased to announce the gems for merb 1.1.0 have been cut. They should be
appearing on rubygems.org soon. Merb 1.1 brings a lot of changes, but hopefully
most of them shouldn’t be too noticeable, as they’re fixing bugs. That having
been said, there have been some breaking changes with regards to merb 1.0, which
will be explained later.

New Features

  • Ruby 1.9 support. The big one. Merb now runs on ruby 1.9.1. This mandated some
    small changes to the internals as well as some changes to the specs. However,
    it shouldn’t require any changes in your app level code, or at least the merb
    specific parts of your app level code.
  • Dependency handling with bundler1. This is a breaking change. But it
    should be for the better. Bundler replaces the previous dependencies.rb with a
    Gemfile. It also replaces the Thor tasks for freezing gems. The Gemfile is
    used to work out dependencies before any code is required. This avoids much of
    the dependency hell.
  • Unicorns! Merb is now better behaved as a rack app and works with a config.ru
    file2. This change should make working with whatever is the latest and
    greatest ruby webserver a lot easier.
  • mongoid3 support for merb-auth-more’s SaltedUser class. Thanks to anvar for
    the patch.
  • asset timestamping for static assets. This appends a short query string to
    static assets, allowing long cache expiry times to be set. Thanks for pavel
    for this patch.
  • Bugfixes. So many bug fixes. As part of the release process we’ve done our
    best to clear out many of the bugs which have been gathering dust over the
    past year. Some do still remain, but those generally require a more complex
    solution which needs some thought.

Dependency handling using Bundler

In this version we dropped the old way of loading dependencies using the Kernel
extensions and started to use Bundler for dependency management. This allows
us to move the whole dependency handling and gem management outside the
Merb. Therefore we can simplify some internals and remove some of the Kernel
monkey patching:

  • The old Kernel.dependency and Kernel.dependencies will only ‘require
    gem_name’ or ‘require require_as’ when you call these methods. They will loudly
    inform you of the fact via depreciation warnings too. If you see the warning,
    you should move your dependency to the Gemfile.
  • Also methods: use_orm, use_test, use_testing_framework and use_template_engine
    DON’T require any gems now, you must add them as dependencies in the Gemfile.
    Merb generators was changed to generate you Gemfile for your application and
    settings instead of the dependencies.rb.

So what still works? Almost everything except it doesn’t defer to the Merb
start and doesn’t load exact version of gem if more versions are installed:


dependency "json"                           => works 
dependency "rspec", :require_as => 'spec'   => works try to require 'spec' 
dependency "json", '1.1.6'                  => works unless you have 
                                               >= 1.1.6 installed 
dependency "json" { }                       => works but doesn't yield 

For more information, check the wiki4.

Bug fixes

  • [merb-assets] #859 Merb can append timestamps to static assets
  • [merb-core] #1040 Allow using <%== > escaped version of <= %>
  • [merb-core] #1068 Correctly handle HEAD requests (This requires manual
    alteration of rack.rb)
  • [merb-core] #1174 Merb::Config[:use_mutex] issue
  • [merb-helpers] #1212 Merb::Helpers::Form::Builder Base#options doesn’t convert
    ‘sel’ to string before comparing to string
  • [merb-core] #1258 Sessions could be overwritten under certain (rare)
    situations.
  • [merb-core] #1288 Fix for run_later in clusters
  • [merb-core] #1298 Fix potential timing attack on cookie sessions.
  • [merb-core] #1304 Multipart input parsing produces wrong checkbox input
  • [merb-core] #1310 Prevent mongrel bloat when streaming files
  • [merb-core] #1317 Merb now returns correct cookie headers
  • [merb-core] Improvements to handling of conditional validators
  • And more … checkout the repository5 and the lighthouse6.

Thanks

Big thanks for this release have to go to Pavel Kunc7. Without him driving it
forward, it probably wouldn’t have happened. Additional thanks go to:
Jacques Crocker (merbjedi)
Martin Gamsjaeger (snusnu)
Jonathan Stott (namelessjon)
And to anyone who submitted bug reports, with or without patches.

For the future

We’re still not entirely sure about merb’s future, beyond that we intend it to
have one! However, these are some of the things we’re considering for future
releases:

  • Better rack behaviour. This includes removal of the old server adapters and
    use of a config.ru file by default.
  • Removal of merb clustering from the core. This probably shouldn’t have been in
    the core in the first place. There are more robust solutions out there such as
    unicorn8, rainbows9 and passenger10. Plus, of course, a merb-cluster gem
    would not be out of the question.
  • merging in of benschwarz’s improvements to merb-cache11. These bring more
    robust behaviour to merb-cache, but should be transparent to you as a
    developer on merb.
    I hope the new release works for you as well as it does for us. If it doesn’t,
    please let us know!

1 http://github.com/carlhuda/bundler
2 http://wiki.github.com/merb/merb/howto-use-unicorn
3 http://github.com/durran/mongoid
4 http://wiki.github.com/merb/merb/howto-using-the-bundler
5 http://github.com/merb/merb
6 https://merb.lighthouseapp.com/projects/7433-merb/
7 http://github.com/pk
8 http://unicorn.bogomips.org/
9 http://rainbows.rubyforge.org/
10 http://www.modrails.com/
11 http://github.com/benschwarz/merb-cache

Clone this wiki locally