Dev.to is an open source Rails application on GitHub. All Rails applications follow the same conventions which makes jumping from different Rails applications a seamless experience.
We will investigate a specific route,
/dashboard, but we can repeat this process for other routes to learn about dev.to incrementally. Let's take a trip down MVC lane.
It's helpful to start from the routes file to see all the routes that we can access in dev.to. We can access the routes file in config/routes.rb.
Inside of the file we can see the following:
get "/dashboard" => "dashboards#show"
This means that when a user makes a get request to
/dashboard, Rails will use the
DashboardsController and run the
We can find the
DashboardsController here app/controllers/dashboards_controller.rb. The controller is in charge of gathering data from models and making them available to the view.
In the show action of the controller, we see that we are gathering articles from users.
@articles = target.articles
Let's take a peak at the
A model maps directly to a table in Rails. For example the
Article model maps to the
articles table in the database. We can define relationships in the model.
For example, in the user model, we can see that a single user has many articles.
has_many :articles, dependent: :destroy
Inside of the article model, we see that a single article belongs to a user.
We can complete our MVC cycle in the view file where the articles are displayed to the user.
<% @articles.each do |article| %> <%= render "dashboard_article", article: article, organization: article.organization, org_admin: true, manage_view: false %> <% end %>
It's awesome that dev.to is an open source project! We can continue this process to incrementally learn more about the codebase.
- Investigate a specific route in the
- Find the controller and action that the route is paired with
- Investigate the models that the controllers are orchestrating for the view file.
- Look at the view file to see what is actually rendered to the user.