would call that a negative if I were
securing a nuclear reactor.”
“[Rails] is based on a program-
ming language with which most de-
velopers are not familiar,” noted
Monson-Haefel. “Thus, the ecosys-
tem around Ruby isn’t as healthy as
it is for Java. It’s harder to find train-
ing, and it’s harder to find tools.”
According to Tate, “Ruby is a lot
more dynamic [than other lan-
guages], so you have to know what
you are doing with it.”
Because Rails is in its early stages,
no one has built integrated develop-
ment environments yet. Thus, Rails
tools are primarily command-line
driven, requiring more manual work
by developers.
Like other new technologies, said
the National Research Council of
Canada’s Downes, Rails is evolving
rapidly and not always consistently.
“Like most such code,” Downes
noted, “Rails relies on a foundation
of numerous other applications.”
“This means that upgrades in foun-
dational code may result in instabil-
ity in Rails,” he said. “This was the
problem I encountered.”
He noted, “Ruby 1.8.3 was re-
leased and adopted by the Rails com-
munity. However, Rails breaks under
1.8.3 because Ruby developers did
not test for compatibility with Rails.
Also, MySQL (an open source rela-
tional database) adopted a new user-
authentication system. When Rails
tried to log on to MySQL using the
old system, it failed. Rails was thus
upgraded to adapt to the new
MySQL authentication. However,
this meant that it now fails on older
MySQL systems.”
Moreover, Downes said, “Much
of the documentation I found, de-
spite being only a few months old,
was out of date and, consequently,
incorrect.”
In Rails, Hibbs explained, a pre-
programmed method within a con-
troller class handles each command,
which requires very little textual
overhead, and all related commands
can occupy the same file. This greatly
reduces the amount of work and
code necessary in Rails.
Rails also entails assumptions,
which means that without the need
for any configuration, it builds pro-
grams that automatically behave as
Web applications generally behave.
For example, Heinemeier Hansson
noted, Rails makes the assumption
that in a Web application, a database
table—such as one called “cars”—
will includes multiple classes of the
same general type—such as “sports
cars” and “SUVs.”
Developers would have to config-
ure their applications when such
normal behavior isn’t desired.
According to Heinemeier Hansson,
many application-development ap-
proaches assume maximum user flex-
ibility is most desirable and thus
require considerable configuration to
ensure that flexibility.
On the other hand, he explained,
“Rails says, ‘Let’s make it easy for
what most people need to do most
of the time. Let’s optimize for that
scenario. And sure, let’s have enough
flexibility to make it possible to do
something else.’”