Merb 1.1 "Black Hole" released!

14 views
Skip to first unread message

Jonathan Stott

unread,
Mar 22, 2010, 5:15:56 PM3/22/10
to merb
Merb 1.1 "Black Hole"
=====================

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 bundler[1]. 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
file[2]. This change should make working with whatever is the latest and
greatest ruby webserver a lot easier.

* mongoid[3] 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 wiki[4].


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 repository[5] and the lighthouse[6].


Thanks
------

Big thanks for this release have to go to Pavel Kunc[7]. 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
unicorn[8], rainbows[9] and passenger[10]. Plus, of course, a merb-cluster gem
would not be out of the question.

* merging in of benschwarz's improvements to merb-cache[11]. 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

Martin Gamsjaeger

unread,
Mar 22, 2010, 7:01:11 PM3/22/10
to me...@googlegroups.com
Yay!

So cool! Huge congratz to you guys for finally pulling it off! There
have been times that I thought that the world won't ever see a
merb-1.1 :P

Congratz and thx to everyone involved!

cheers
snusnu

> --
> You received this message because you are subscribed to the Google Groups "merb" group.
> To post to this group, send email to me...@googlegroups.com.
> To unsubscribe from this group, send email to merb+uns...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/merb?hl=en.
>
>

Dylan Clendenin

unread,
Mar 22, 2010, 8:45:08 PM3/22/10
to me...@googlegroups.com
awesome, can't wait to try it out.

2010/3/22 Martin Gamsjaeger <gams...@gmail.com>:

--
Dylan Clendenin
831.331.1484

Matt Aimonetti

unread,
Mar 23, 2010, 2:49:33 AM3/23/10
to me...@googlegroups.com
Great job guys, someone might also want to take care of this wikipedia issue: http://en.wikipedia.org/wiki/Merb

- Matt

Ted Han

unread,
Mar 23, 2010, 7:40:57 AM3/23/10
to me...@googlegroups.com
Congrats guys!

Thanks for the heads up Matt, i'll do something about it. :P

-T

pedro mg

unread,
Mar 23, 2010, 8:08:20 AM3/23/10
to me...@googlegroups.com
Great work indeed !!
Will be testing this 1.1 soon too.

Merb rocks!

On Mar 22, 2010, at 9:15 PM, Jonathan Stott wrote:

> Merb 1.1 "Black Hole"
> =====================
>
> 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.

pedro mg
http://blog.tquadrado.com

Eleo

unread,
Mar 24, 2010, 6:25:49 PM3/24/10
to merb
This is awesome.
Reply all
Reply to author
Forward
0 new messages