Rails6.1 で config/routes.rb を分割する

Rails 6.1 で config/routes.rb を簡単に分割する機能ができたので便利。

# config/routes.rb
Rails.application.routes.draw do
  root to: 'home#index'
  resources :users

  draw(:admin)
  draw(:api)
end
# config/routes/admin.rb
namespace 'admin' do
  root to: "home#index"
end
# config/routes/api.rb
namespace 'api' do
  resources :users
end

分割手順

  • ベースとなるルーティングファイル(config/routes.rb)にて draw(:another) を記述
  • config/routes/ 配下に another.rb を配置
  • another.rb ファイル内に分割したい単位のルーティングを記述

本当に必要になるまでは分割しないこと

公式ガイドに注意喚起されているが、無闇にルーティングファイルを分割するのは気をつけたほうが良い、と書いてある。

ルーティングファイルを複数に分けると、理解が難しくなり、見落としやすくなります。ほとんどのアプリケーションでは、たとえルーティングが数百個になっていたとしても、ルーティングファイルを1つのままにしておくほうが開発者にとっては楽です。Railsのルーティングには、namespaceやscopeを用いてルーティングを分割整理する方法が既に用意されています。

ref. Rails のルーティング - Railsガイド