When you ask NetBeans to create a Rails project - internally NetBeans uses the rails' helper script -, it creates the entire directory structure for your application. Rails knows where to find things it needs within this structure, so you don't have to tell it explicitly.
The directory structure of a Rails application looks as following. Please note that NetBeans uses logical names to reflect these directories. For example, the Controllers node represents app/controllers directory while Models node represents app/models. If you click Files view of the project, you will see the directories mentioned below.
Physical directories that are created for the Ruby on Rails project
The directory structure of a Rails application looks as following. Please note that NetBeans uses logical names to reflect these directories. For example, the Controllers node represents app/controllers directory while Models node represents app/models. If you click Files view of the project, you will see the directories mentioned below.
app | Holds all the code that's specific to this particular application. |
app/controllers | Holds controllers that should be named like hello_controller.rb for automated URL mapping. All controllers should descend from ApplicationController which itself descends from ActionController::Base. |
app/models | Holds models that should be named like message.rb. Most models will descend from ActiveRecord::Base. |
app/views | Holds the template files for the view that should be named like hello/say_hello.rhtml for the HelloController#say_hello action. |
app/views/layouts | Holds the template files for layouts to be used with views. This models the common header/footer method of wrapping views. In your views, define a layout using the <tt>layout :default</tt> and create a file named default.rhtml. Inside default.rhtml, call <% yield %> to render the view using this layout. |
app/helpers | Holds view helpers that should be named like hello_helper.rb. These are generated for you automatically when using script/generate for controllers. Helpers can be used to wrap functionality for your views into methods. |
config | Configuration files for the Rails environment, the routing map, the database, and other dependencies. |
components | Self-contained mini-applications that can bundle together controllers, models, and views. |
db | Contains the database schema in schema.rb. |
db/migrate | Contains all the sequence of Migrations for your schema. |
doc | This directory is where your application documentation will be stored when generated using <tt>rake doc:app</tt> |
lib | Application specific libraries. Basically, any kind of custom code that doesn't belong under controllers, models, or helpers. This directory is in the load path. |
public | The directory available for the web server. Contains subdirectories for images, stylesheets, and javascripts. Also contains the dispatchers and the default HTML files. This should be set as the DOCUMENT_ROOT of your web server. |
script | Helper scripts for automation and generation. |
test | Unit and functional tests along with fixtures. When using the script/generate scripts, template test files will be generated for you and placed in this directory. |
vendor | External libraries that the application depends on. Also includes the plugins subdirectory. This directory is in the load path. |