1.1. Rails
Strengths
As you go through this site, you'll learn how
Rails can thrive without all of the extensive libraries required by
other languages. Ruby's flexibility lets you extend your
applications in ways that might have been previously unavailable to
you. You'll be able to use a Rails feature called scaffolding to
put database-backed user interfaces in front of your customers
quickly. Then, as you improve your code, the scaffolding melts
away. You'll be able to build database-backed model objects with
just a couple of lines of code, and Rails will fill in the tedious
details.
The most common programming problem in today's
typical development project involves building a web-based user
interface to manage a relational database. For that class of
problems, Rails is much more productive than any other web
development framework either of us has ever used. The strengths
aren't limited to any single groundbreaking invention; rather,
Rails is packed with features that make you more productive, with
many of the following features building on one other:
Metaprogramming
-
Metaprogramming techniques use programs to write
programs. Other frameworks use extensive code generation, which
gives users a one-time productivity boost but little else, and
customization scripts let the user add customization code in only a
small number of carefully selected points. Metaprogramming replaces
these two primitive techniques and eliminates their disadvantages.
Ruby is one of the best languages for metaprogramming, and Rails uses this capability
well.
Active
Record
-
-
Rails introduces the Active Record framework,
which saves objects to the database. Based on a design pattern
cataloged by Martin Fowler, the Rails version of Active Record
discovers the columns in a database schema and automatically
attaches them to your domain objects using metaprogramming. This
approach to wrapping database tables is simple, elegant, and
powerful.
Convention over
configuration
-
Most web development frameworks for .NET or Java
force you to write pages of configuration code. If you follow
suggested naming conventions, Rails doesn't need much
configuration. In fact, you can often cut your total configuration
code by a factor of five or more over similar Java frameworks just
by following common conventions.
Scaffolding
-
You often create temporary code in the early
stages of development to help get an application up quickly and see
how major components work together. Rails automatically creates
much of the scaffolding you'll need.
Built-in
testing
-
Rails creates simple automated tests you can
then extend. Rails also provides supporting code called
harnesses and fixtures that make test cases easier to write
and run. Ruby can then execute all your automated tests with the
rake utility.
Three
environments: development, testing, and
production
-
-
Rails gives you three default environments:
development, testing, and production. Each behaves slightly
differently, making your entire software development cycle easier.
For example, Rails creates a fresh copy of the Test database for
each test run.
There's much more, too, including Ajax for rich
user interfaces, partial views and helpers for reusing view code,
built-in caching, a mailing framework, and web services. We can't
get to all of Rails' features in this site; however, we will let
you know where to get more information. But the best way to
appreciate Rails is to see it in action, so let's get to it.
 |