🚂
rails routes(rake routes) で表示される不要なルーティング設定を非表示にする
概要
rails new
で作成したプロジェクトで rails routes
すると、デフォルトでストレージ用のフレームワークと、メール用のフレームワークのルーティングが設定されている。
今回この 2 つは使うつもりがないので、表示されないように修正する。
$ rails routes
Prefix Verb URI Pattern Controller#Action
api_v1_samples GET /api/v1/samples(.:format) api/v1/samples#index
POST /api/v1/samples(.:format) api/v1/samples#create
api_v1_sample GET /api/v1/samples/:id(.:format) api/v1/samples#show
PATCH /api/v1/samples/:id(.:format) api/v1/samples#update
PUT /api/v1/samples/:id(.:format) api/v1/samples#update
DELETE /api/v1/samples/:id(.:format) api/v1/samples#destroy
rails_health_check GET /up(.:format) rails/health#show
rails_postmark_inbound_emails POST /rails/action_mailbox/postmark/inbound_emails(.:format) action_mailbox/ingresses/postmark/inbound_emails#create
rails_relay_inbound_emails POST /rails/action_mailbox/relay/inbound_emails(.:format) action_mailbox/ingresses/relay/inbound_emails#create
rails_sendgrid_inbound_emails POST /rails/action_mailbox/sendgrid/inbound_emails(.:format) action_mailbox/ingresses/sendgrid/inbound_emails#create
rails_mandrill_inbound_health_check GET /rails/action_mailbox/mandrill/inbound_emails(.:format) action_mailbox/ingresses/mandrill/inbound_emails#health_check
rails_mandrill_inbound_emails POST /rails/action_mailbox/mandrill/inbound_emails(.:format) action_mailbox/ingresses/mandrill/inbound_emails#create
rails_mailgun_inbound_emails POST /rails/action_mailbox/mailgun/inbound_emails/mime(.:format) action_mailbox/ingresses/mailgun/inbound_emails#create
rails_conductor_inbound_emails GET /rails/conductor/action_mailbox/inbound_emails(.:format) rails/conductor/action_mailbox/inbound_emails#index
POST /rails/conductor/action_mailbox/inbound_emails(.:format) rails/conductor/action_mailbox/inbound_emails#create
new_rails_conductor_inbound_email GET /rails/conductor/action_mailbox/inbound_emails/new(.:format) rails/conductor/action_mailbox/inbound_emails#new
rails_conductor_inbound_email GET /rails/conductor/action_mailbox/inbound_emails/:id(.:format) rails/conductor/action_mailbox/inbound_emails#show
new_rails_conductor_inbound_email_source GET /rails/conductor/action_mailbox/inbound_emails/sources/new(.:format) rails/conductor/action_mailbox/inbound_emails/sources#new
rails_conductor_inbound_email_sources POST /rails/conductor/action_mailbox/inbound_emails/sources(.:format) rails/conductor/action_mailbox/inbound_emails/sources#create
rails_conductor_inbound_email_reroute POST /rails/conductor/action_mailbox/:inbound_email_id/reroute(.:format) rails/conductor/action_mailbox/reroutes#create
rails_conductor_inbound_email_incinerate POST /rails/conductor/action_mailbox/:inbound_email_id/incinerate(.:format) rails/conductor/action_mailbox/incinerates#create
rails_service_blob GET /rails/active_storage/blobs/redirect/:signed_id/*filename(.:format) active_storage/blobs/redirect#show
rails_service_blob_proxy GET /rails/active_storage/blobs/proxy/:signed_id/*filename(.:format) active_storage/blobs/proxy#show
GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs/redirect#show
rails_blob_representation GET /rails/active_storage/representations/redirect/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations/redirect#show
rails_blob_representation_proxy GET /rails/active_storage/representations/proxy/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations/proxy#show
GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations/redirect#show
rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show
update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update
rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create
修正方法
/config/application.rb
で rails/all
が require
されているが、ここでまとめてフレームワークを利用するよう設定されている。
require_relative "boot"
require "rails/all"
rails/all
は以下のフレームワークを require
しているとのこと。
active_record/railtie
active_storage/engine
action_controller/railtie
action_view/railtie
action_mailer/railtie
active_job/railtie
action_cable/engine
action_mailbox/engine
action_text/engine
rails/test_unit/railtie
今回active_storage/engine
と action_mailer/railtie
は必要ないため、この 2 つを除いたフレームワークを require
する。
require_relative "boot"
# rails/all だと不要なフレームワークまで読み込まれるため必要なものだけ記載
# require "rails/all"
require 'active_record/railtie'
require 'action_controller/railtie'
require 'action_view/railtie'
require 'active_job/railtie'
require 'action_cable/engine'
require 'rails/test_unit/railtie'
また、プロジェクト内を active_storage
と action_mailer
で grep して削除する。
ここまでの作業を行うと、以下のようにスッキリとルーティングを確認できる。
$ rails routes
Prefix Verb URI Pattern Controller#Action
api_v1_samples GET /api/v1/samples(.:format) api/v1/samples#index
POST /api/v1/samples(.:format) api/v1/samples#create
api_v1_sample GET /api/v1/samples/:id(.:format) api/v1/samples#show
PATCH /api/v1/samples/:id(.:format) api/v1/samples#update
PUT /api/v1/samples/:id(.:format) api/v1/samples#update
DELETE /api/v1/samples/:id(.:format) api/v1/samples#destroy
rails_health_check GET /up(.:format) rails/health#show
参考
rails/all
で何が require
されるのかわかる
これは 2021 年の記事ということもあり、コピペでは目的を達成できなかったため、今回記事を作成した
Discussion