rails newした後に使わないAction Cableを外す
Action Cableを使わない場合はrails new時に-skip-action-cable
をするのが一般的ですが、自分の場合はrails newした後にレビューでAction Cableは不要なので外した方がいいとの指摘を貰いました。
rails newした後にAction Cableを外す方法が調べても案外出てこなかったので、削除するべきディレクトリを調査した方法とその結果をメモします。
環境
ruby 3.0.2 Rails 6.1.4.1
調査した方法
-skip-action-cable
を付けない場合と付ける場合でそれぞれrails newし、2つのディレクトリを比較してskip-action-cable
をつけたアプリにのみに存在するファイルを調べます。
1. -skip-action-cable
を付けない場合と付ける場合でそれぞれrails newする
$ rails new app_a -d postgresql --skip-action-mailer
$ rails new app_b -d postgresql --skip-action-mailer --skip-action-cable
2. 2つのアプリを比較する
$ diff -r app_a app_b
という単純なdiffコマンド大量に結果が出てくるため差分が把握しにくいです。
GUIでファイルの差分を確認できるXcodeに入ってるFileMergeを使ったり、diffコマンドをgrepして絞ったりして調べました。
削除するディレクトリ/ファイル・コード行
skip-action-cable
をつけた場合のみに存在したファイルやコード行を削除します。
ディレクトリ/ファイルの削除
/app/channels /app/javascript/channels /config/cable.yml /test/channels (Minitestの場合)
コード行を削除
/app/javascript/packs/application.js
import "channels"
/config/application.rb
これは削除ではなくてコメントでいいかも
require "action_cable/engine"
/config/environments/production.rb
# Mount Action Cable outside main process or domain. # config.action_cable.mount_path = nil # config.action_cable.url = 'wss://example.com/cable' # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
Gemfile
# Use Redis adapter to run Action Cable in production # gem 'redis', '~> 4.0'
/package.json
"@rails/actioncable": "^6.0.0",