Blog

Archive for 2008

Rails & Merb, working together!

By | December 23rd, 2008 at 5:12PM

You probably know the news: Rails & Merb are coming together to make Rails 3.0 in 2009!

You can read details from many sources, including:

And I’m sure others (sorry if I forgot anyone!).

We started Engine Yard because of Ruby on Rails and we’re very happy to support this cooperation between the two communities. Engine Yard folks who were working on Merb are now working toward Rails 3.0.

Thanks to everyone working on Rails and Merb for making the world a better place! I honestly believe that easier app development (and of course, deployment) does improve the world: it allows more people and their ideas to flourish, and that’s a good thing!

Merry Christmas and Happy New Year!

Popularity: 1% |

Safe Harbor Certification

By | December 8th, 2008 at 5:12PM

Engine Yard is now Safe Harbor certified! After lots of hard work by the finance, legal, support, data center ops and sales teams, we are now in compliance with the European Union Directive 95/46/EC on Data Privacy.

For our European partners, this removes any legal barriers to deploying their applications on Engine Yard’s hosting platform.

For more information, please review Engine Yard’s Safe Harbor Policy.

Popularity: 1% |

Apache + Passenger -vs- nginx + mongrel

By | December 5th, 2008 at 5:12PM

At Engine Yard, we’ve been receiving a lot of inquiries as to whether we support Passenger™.

This uptick in interest seems to be related to support and comments from DHH himself. We’re in 100% agreement and we’ve been living it for 2 years!

However, I think there are some issues that need to be discussed with respect to Passenger. I felt compelled to discuss them at this time due to this post to Twitter today.

First, if you’re running a single Rails application, Passenger in and of itself offers little advantage compared to other common deployment methods such as the nginx + mongrel stack that we’ve been using and developing for two years. It’s certainly not substantially faster or more efficient, thought it does offer simpler configuration, particularly so if you have access to a system where Apache is already up and running.

If you’re running multiple Rails applications, and are using Passenger’s ability to serve more applications than applications processes, you need to be aware of the performance of requests requiring an application process switch from one application to another. First requests are always slow, as a lot of code needs to be heated up, etc. Over ten years ago I learned personally that it’s far easier to manage static environments compared to dynamic environments for one simple reason: When things are changing dynamically, it’s hard to understand why things are behaving the way they are. The issues I’m discussing are generally acceptable in a situation where you have many low traffic applications, and you need to run those applications in a very limited environment. At Engine Yard, this is a very rare need for our customers, so this makes us less anxious to switch to something new vs something that is proven and works well.

With the addition of Ruby Enterprise Edition, however, it does offer the additional advantage of memory savings. Some of those advantages are lost by having to run Apache, which as commonly delivered, is considerably larger and less efficient than nginx. Of course, you can reduce these disadvantages by cutting down a custom build and tweaking the included modules, but once you’re headed down that road, the simplicity advantage has left the building. :-)

The reason that I felt compelled to respond to Pratik’s Twitter post is that it entirely ignores a few issues that prevent Engine Yard, and no doubt other companies from immediately supporting Passenger&trade and/or Ruby Enterprise Edition.

First, Engine Yard uses 64 bit environments to allow our customers the highest performance virtual machines and access to large memory spaces when needed. Just today Phusion has introduced a version that should fix these issues. Before today, Engine Yard could not support this combination, it’s just that simple, no FUD intended.

Second, our customers choose Engine Yard for experience and expertise in hosting Rails applications. At this moment, we have no experience or expertise in Passenger™. That is a fact.

All in all, I think that Phusion’s Passenger and Rails Enterprise Edition products are interesting. So interesting, in fact, that we chose to investigate the same basic strategy with respect to Rubinius. I’m not yet certain that a substantially patched version of the Ruby source code, maintained independent from the core team, is something that can be supported in the near term, though it’s clear from the drumbeat and experiences of users that the trajectory is looking good.

I’m certainly hoping and encouraging the Ruby core team to work with Phusion to accept their GC patches into the mainline.

Popularity: 1% |

Merb 1.0 Spec Change

By | November 23rd, 2008 at 5:11PM

When we released 1.0, we also copied the existing 1.0 specs into a directory marked spec10 and added a rake task called spec:oneoh. This allows us to make sure that new versions of Merb still run against the same API as Merb 1.0, and that we’re not accidentally breaking working 1.0 APIs (to the extent that our 1.0 specs can make such an assertion).

The rule is that those specs must not be changed, with one exception. Specifically, we’re allowed to modify the 1.0 specs if the spec itself broke for reasons unrelated to the thing it was attempting to spec, and the breakage does not indicate a breakage in the 1.0 API. Additionally, any such change requires a public announcement, to minimize the number of such changes.

As a result, I’m announcing a small change in spec10, and the rationale for that change.

Many people have accidentally overridden core Merb::Controller methods in their controllers, with unpredictable (and confusing) results. From my Rails days, I remember this happening as well. As a result, Merb, starting with 1.0.2 and 1.1, will raise an error if you attempt to override a Merb::Controller method.

One of our tests had a controller which used the “method” action. Of course, “method” is already a method on all objects, so our new code caused it to raise an error. However, the test was not asserting that it was legal to override “method”; it was the same sort of accident that caused us to add this feature in the first place. As a result, we have gone into the spec10 directory and modified the action name to “request_method” instead of “method”, allowing 1.0.2 to pass the 1.0 specs.

And that requires this public post.

I hope that these posts will be few and far between, but at the very least, they show a commitment to the public API from the Merb core team that I hope you find reassuring. Thanks!

Popularity: 1% |

Scotland on Rails

By | November 18th, 2008 at 5:11PM

We’re proud to announce that we’ve just signed on as a platinum sponsor for the upcoming Scotland on Rails. This year’s event takes place in Edinburgh on March 26 – 28, and includes a tutorial charity event with Rails luminaries Chad Fowler and Marcel Molina.

We had the pleasure of working with Paul, Alan and Graeme last year, and really enjoyed our interactions with their team. The community feedback after the event was overwhelmingly positive, and things look like they’ll be even better this year.

The Call for Papers is open: give it a shot!

Popularity: 1% |