1.3. Organization
The directories
created during installation provide a
place for your code, scripts to help you manage and build your
application, and many other goodies. Later, we'll examine the most
interesting directories in greater detail. For now, let's take a
quick pass through the directory tree in the project we
created:
app
-
This application organizes your application
components. It's got subdirectories
that hold the view (views and
helpers), controller (controllers), and the backend business logic
(models).
components
-
This directory holds componentstiny self-contained applications
that bundle model, view, and controller.
config
-
This directory contains the small amount of
configuration code that your application will need, including your
database configuration (in database.yml), your Rails environment
structure (environment.rb), and
routing of incoming web requests (routes.rb). You can also tailor the behavior
of the three Rails environments for test, development, and
deployment with files found in the environments directory.
db
-
Usually, your Rails application will have model
objects that access relational database tables. You can manage the
relational database with scripts you create and place in this
directory.
doc
-
Ruby has a framework, called RubyDoc, that can
automatically generate documentation for code you create. You can
assist RubyDoc with comments in
your code. This directory holds all the RubyDoc-generated Rails and application
documentation.
lib
-
You'll put libraries here, unless they
explicitly belong elsewhere (such as vendor libraries).
log
-
Error logs go here. Rails creates scripts that
help you manage various error logs. You'll find separate logs for
the server (server.log) and each
Rails environment (development.log, test.log, and production.log).
public
-
Like the public
directory for a web server, this directory has web files that don't
change, such as JavaScript files (public/javascripts), graphics (public/images), stylesheets (public/stylesheets), and HTML files
(public).
script
-
This directory holds scripts to launch and
manage the various tools that you'll use with Rails. For example,
there are scripts to generate code (generate) and launch the web server
(server). You'll learn much more
about using these scripts throughout this site.
test
-
The tests you write and those Rails creates for
you all go here. You'll see a subdirectory for mocks (mocks), unit tests (unit), fixtures (fixtures), and functional tests (functional). We comprehensively cover testing
in
"rubyrails-chp-7.html#rubyrails-chp-7">Chapter 7.
tmp
-
Rails uses this directory to hold temporary
files for intermediate processing.
vendor
-
Libraries provided by third-party vendors (such
as security libraries or database utilities beyond the basic Rails
distribution) go here.
Except for minor changes between releases, every
Rails project will have the same structure, with the same naming
conventions. This consistency gives you a tremendous advantage; you
can quickly move between Rails projects without relearning the
project's organization. The Rails framework itself also relies on
this consistency because the different Rails frameworks will often
discover files solely on naming conventions and directory
structure. For example, later in this example, you'll see the
controller invoke views without any custom code.
|