コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Rails6において、rails newしたあとに標準機能を間引いていくときにみるべきところ

個別に実装を剥がして行く場合のアプローチ

環境

# bin/rails -v
Rails 6.0.3.1

今回想定するシチュエーション

rails new したときにオプションで間引きたかったが間引き忘れたときにどうやって対応をしていくべきかというアプローチ

見るべきところ

config/application.rb

ここで各種拡張の読み込みを行っている。new時に除外オプションをつけないと以下の様になる

require_relative 'boot'

require 'rails/all'
# 以下略

この rails/all は何をしているかというと以下の通り

# frozen_string_literal: true

# rubocop:disable Style/RedundantBegin

require "rails"

%w(
  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
  sprockets/railtie
).each do |railtie|
  begin
    require railtie
  rescue LoadError
  end
end

このようにrequireをまとめてやっている形なので、個別に削りたいケースでは個別のrequireに書き換えて上げると良い。

なお、rails new するときにオプション指定すると以下のように書き換わるので倣っても良い

require_relative 'boot'

require 'rails'
# Pick the frameworks you want:
require 'active_model/railtie'
require "active_job/railtie"
require 'active_record/railtie'
require 'active_storage/engine'
require 'action_controller/railtie'
require "action_mailer/railtie"
require "action_mailbox/engine"
require "action_text/engine"
require 'action_view/railtie'
require "action_cable/engine"
require "sprockets/railtie"
require 'rails/test_unit/railtie'

config/environments/のファイル

各設定ファイルに呼び出し設定があることがあるので、必要なものを取り除く 大概はRailsコンソールを立ち上げ時にエラーがでるので、そちらをもとに取り除くと良い

参考リンク