P. 1
[SOTH] Scaling Rails

[SOTH] Scaling Rails

|Views: 454|Likes:
Published by Gonçalo Silva
State of the art review on Scaling Rails.
State of the art review on Scaling Rails.

More info:

Published by: Gonçalo Silva on Feb 05, 2010
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF or read online from Scribd
See more
See less



Rails 3 is currently in development and a beta release is scheduled for February 2010.
Most of Rails’ code has been refactored and this release’s main goals were concerned
with improved component decoupling and performance [Yeh09].
As of component decoupling, a great deal of work has been done and impressive goals
have been achieved [Kat09a]. Most of Rails’ components are agnostic now, having stan-
dard interfaces for communication with each other. The key concept is that a component
is agnostic to whom is interacting with it. For this to happen interaction procedures have
been developed, providing each of Rails’ components with a standard interface.



The decoupling process also allowed for improved modularity, permitting Rails’ com-
ponent separation. ActionController, for instance, has been split into ActionDispatch,
ActionController and AbstractController [Kat09a]. There was a lot of work on explicitly
handling each component’s internal dependencies. This enables the developer to carefully
select which modules he needs in his Rails application without caring about including the
modules it depends on as well. In previous versions of Rails, one had to import the top-
level modules. The alternative was to parse the source code of the framework to find
its internal dependencies in order to import all necessary modules. Applications are now
able to only load the modules they really need thus becoming faster and lighter. While this
improved modularity also had its impact on performance, some effort was also put into
common Rails bottlenecks like partial and collection rendering [Kat09a], among some
other optimized sections.


Chapter 3

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->