InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Merb 1.0 Coming Soon, RC1 Available Now

Posted by Mirko Stocker on Oct 14, 2008

Sections
Development
Topics
Web Frameworks ,
Ruby ,
Ruby on Rails
Tags
Merb

Release Candidate 1 for Merb 1.0 is now available. Merb's goal is to provide a minimal but powerful core that can be extended through plug-ins, rather than "trying to produce a monolithic library with everything in the core", as stated on its website.

InfoQ talked to Merb's maintainer Yehuda Katz, to give us a picture about Merb:

The main thing to remember about Merb is that we focus on providing a strong set of core features that make very few assumptions. On top of that, we add a set of defaults that can be granularly removed. We spend a lot of time making sure that the defaults are not entangled and very easy to remove should you want to make different assumptions than we have made.

This makes it a lot easier to adapt to new techniques or paradigms (like cloud computing, changes in JavaScript technologies, improvements in Ruby's database support, etc.).

From our perspective, the biggest difference between Merb and Rails is that Merb believes in extremely granular opt-out of defaults that we provide, while Rails requires fairly large opt-out decisions. The Merb stack is more like a stack built of lego blocks, while the Rails stack is like a stack built of Duplo blocks (if you opt-out of an assumption, you're opting out of a lot).

With that said, Merb agrees 100% with Rails' ideas around convention over configuration; we want developers who use Merb to be able to get up and running quickly with a similar set of opinionated assumptions.

Switching frameworks usually takes some time and effort, so we wanted to know how Merb helps a Rails developer with the migration:

The good news is that you can still use your ActiveRecord models, and that controllers and views are similar enough to make a port relatively straight-forward. That said, there are some syntactic and conceptual differences between Merb and Rails, and we should have a list of the differences on the Merb wiki before we release Merb 1.0 final at the end of this month.

There are also two upcoming books on Merb:

I'm working on a book on Merb for Manning, which is already starting to become available via their MEAP program. Foy Savas is also writing a book for Addison Wesley.

In an InfoQ interview in January, a "central plug-in site" was mentioned, what is the status on that?

Part of the 1.0 release involves making the Merb project include a number of common plugins, like authentication, caching, and exception notification, as first-class citizens. We may, at some point, revisit a central plugin repository.

Yehuda recently blogged about improvements in Merb Server, so we asked him to elaborate on that:

Both Merb and Rails have mechanisms for starting themselves up and serving pages. In Rails, this mechanism is script/server. In Merb, it is the merb command. For 1.0, we significantly improved merb's version of the server to add features that were sorely missing in Merb 0.9.

Some examples:
  • Starting up a cluster of Merb servers to bind to specific ports that are already in use does not cause Merb to crash. Instead, Merb prints a notice and waits for the ports to become available. This allows the following deployment solution: (1) update new code on the remote server; (2) load up new merb cluster; (3) kill the old cluster gracefully.
  • It's now fast, easy, and foolproof to reload your code at production time if you have not added additional gems or modified init.rb. Simply run merb --fast-redeploy in the directory in question and all code will be reloaded.
  • If a merb worker process is killed (even via kill -9) it will be instantly respawned. This allows you to have monit kill bloated processes without having to worry about downtime.
In the future, we'll be further improving the merb deployment solution.

 Now that 1.0 is almost out, what is planned for Merb 2?

The plan is to release several 1.x releases over the next year or so that preview features that will be in 2.0. Instead of dropping a big 2.0 release with all of the new features, we will treat 1.x releases as releases that people can use to get familiar with 2.0 features, and as a way to develop Merb 2.0 incrementally, in the Agile spirit.

The big story of Merb 2.0 will be improved support for rapid prototyping, learning from frameworks in the Python community and from other programming languages to make it even easier to get up and running with Merb. We plan to provide further integration with JavaScript libraries, making it as easy as possible to install libraries like jQuery and their related plugins, CSS, and images.

We also plan to further improve the Merb server, to further optimize the memory usage of Merb applications, decrease the overhead of clusters of merb processes, and possibly make it possible to expand and contract clusters of merb processes on the fly.

Merb 1.0 is expected to be released in the coming weeks. The Merb website has installation instructions.

1.9? by Roger Pack Posted
  1. Back to top

    1.9?

    by Roger Pack

    Wish they had 1.9 support.
    -=R

Educational Content

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.