As amazing and magical as Rails can be, it can also be challenging to understand where to start working. and to understand the directory structure of the application.
This article will explain The directory structure rails apps.
But before we get into the directory structure of rails applications first we must have a good understanding of the
Model View Controller structure(MVC).
Let's dive in.
After Creating the application rails new my_app
Boom! The first Rails app ready to start working on it.
run cd my_app
then run code .
to open the application in the code editor.
What are those files and folders that have just been created!?
Now let's explain the purpose of each one of these directories.
app
It organizes the application components. It has subdirectories that hold the view (views and helpers), controllers, and the backend logic (models), and here where will be most of the work done.
let's go over the app subdirectories one by one.
app/assets
Holds the files related to the front end, such as CSS stylesheets, JavaScript code,and images.
app/channels
Channels for ActionCable, which integrates WebSockets with the rest of the Rails application. and allows real-time features to be written in Ruby.
app/controllers
The C in MVC. This subdirectory is where Rails looks to find the controller classes. A middle man between the model and the view.
app/helpers
Utility methods used to assist the model, view, and controller. This helps to keep the code small and focused.
app/javascript
Holds the application's JavaScript packs.
app/jobs
Background jobs, The jobs can be enqueued and executed using the different queuing backend.Active Job Basics
app/mailboxes
Routers for incoming emails. This folder is not present on the app until we use the Action Mailbox feature of Rails.
app/mailers
Mailing structure for the app.
app/models
The M in MVC. This subdirectory holds the classes that model and wrap the data stored in our application's database.
app/views
The V in MVC. Usually written in embedded Ruby (erb), it can also be written in another templating language such as Slim or Haml.
bin
Holds the scripts to start/manage our Rails application.
config
Holds the configuration files, such as database configurations, routings, localizations, etc.
db
Holds the migration files for the tables, schema file, and database seeders. which are just files that can be executed to prepare the database with some initial data.
lib
Rake files and independent codes, usually libraries unless they explicitly belong elsewhere (such as vendor libraries).
log
Holds error logs. Rails create scripts that help us to manage various error logs. there are separate logs for the server (server.log) and each Rails environment (development.log, test.log, and production.log).
public
Holds the static files, such as favicon, compiled assets, error pages.
storage
Uploaded files for disk storage.
test
For the test files. but since many in the community prefer to use the RSpec framework for writing test codes; in that case, this folder will be deleted.
tmp
Rails uses this directory to hold the temporary files.
vendor
Third-party front-end dependencies. (such as security libraries or database utilities beyond the basic Rails distribution).
Apart from these directories, there are some more files:
README
This file contains a basic detail about the application and a description of the directory structure explained above.
Rakefile
This file helps with building, packaging, and testing the Rails code.
Gemfile
Contains a list of all the gems that we want to include in the application. It is used with bundler (also a gem) to install, update, remove and manage the used gems.
Resources:
rubyonrails.org.
Top comments (0)