1
0

More than 1 year has passed since last update.

action_mailboxやactive_storageをRailsのルーティングに表示しないようにする

Last updated at Posted at 2021-11-07

Rails6以降でrails new直後にrake routesを実行すると以下のような結果が表示されます。

~ 省略 ~
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
edit_rails_conductor_inbound_email GET    /rails/conductor/action_mailbox/inbound_emails/:id/edit(.:format)                                 rails/conductor/action_mailbox/inbound_emails#edit
rails_conductor_inbound_email GET    /rails/conductor/action_mailbox/inbound_emails/:id(.:format)                                      rails/conductor/action_mailbox/inbound_emails#show
                               PATCH  /rails/conductor/action_mailbox/inbound_emails/:id(.:format)                                      rails/conductor/action_mailbox/inbound_emails#update
~ 省略 ~

すべてのルーティングが表示されるので非常に便利なのですが、
メール機能などを実装しない場合には行数が増えて単純に見辛いだけなので非表示にする手順をまとめました。

デフォルトでルーティングに表示されるのはcontrollerのCRUD以外では以下のフレームワークのパスなので、こちらを非表示にする手順になります。
・action_mailer
・active_storage

環境

Rails 6.1.4

application.rb

application.rbはRails起動時に読み込まれる初期化プロセスが定義されています。
ここに作成するアプリケーションでは使用しないフレームワークを読み込まない記述を追加します。

全機能を読み込むrequire文を削除 or コメントアウトする

/config/application.rb
require_relative "boot"

require "rails/all"  # ← この行を削除 or コメントアウトする

## 省略 ##

使用したいフレームワークのみ記述する

require 'rails/all'では以下の機能が読み込まれています。参考: Railsガイド
ここから使用したいフレームワーク(action_mailer、active_storageを除く全て)のみrequireで記述します。

  "active_record/railtie"
  "action_controller/railtie"
  "action_view/railtie"
  "action_mailer/railtie"
  "active_job/railtie"
  "action_cable/engine"
  "active_storage/engine"
  "rails/test_unit/railtie"
  "sprockets/railtie"

記述例:

/config/application.rb
require_relative 'boot'

# 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'
require 'sprockets/railtie'

/config/environments/*.rb

/config/environments/配下のファイルには各環境の設定を記述しているファイルが配置されています。
ファイル内にはconfig.action_mailer.perform_caching = false といった形でapplication.rbで読み込まれたフレームワークの設定値が定義されているのでこれらを削除 or コメントアウトします。
エディタ等で/config/environments/フォルダ配下 action_mailer active_storage と検索すると漏れなく見つけることができると思います。

上記の作業が完了するとルーティングに表示されなくなっているはずです。rake routesで確認してみてください。

参考

https://railsguides.jp/initialization.html
https://blog.naoshihoshi.com/entry/2020/03/20/123000

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0