Clean your Rails routes: grouping

How to separate & group your routes by logical entities

Feb 20 ·2min read

In Ruby on Rails , all the routes of a given application can be found within the config/routes.rb file.

You add more and more routes in this file as your project grows.

The problem here is that this file potentially become very complicated to manage over the time.

That’s why it’s important to find a way to order and maintain your routes.

Let’s have a look to an example to see how we could achieve this task.

The my-blog application

Few month ago, we created our my-blog application. This application allows you creating and manipulating blogposts.

Also, it provides an admin dashboard.

So the config/routes.rb looks like as following

Here we can clearly isolate 3 entities:


So let’s see how to extract each of the entities in a separate file.

First, we have to manipulate our config/application.rb file

This line will redefine the target of our config.paths['config/routes.rb'] .

The target is now all the Ruby files under the config/routes/ directory.

So when your application receives a request, Rails will search the expected route in the routing table defined under the config/routes directory.

Ok. So now, let’s have a look to the files in this directory

$>  $ tree config/routes
  ├── base.rb
  ├── admin.rb
  ├── posts.rb
  └── users.rb0 directories, 4 files

Note that each file uses the Rails.application.routes.draw method to declare each resources.

Finally, you can remove the config/routes.rb file.


With this implementation, As things progress, you’ll be able to maintain your routes in a very easy way.

And that will be a good introduction to your app for new developers.