という話があった。
確かにいくつかそういう記事も見つかった。
だけどrailsに関して言えば、application.rb
でrailsをrequireした後にBundler.require
をしているので、気にしなくて良さそうにも見える。
(rubocopのBundler/OrderedGems
も気にしていなそう)
だが、心配なので一応検証してみた。
Gemを用意
$ cd ~/Documents/Temporary/
$ bundle gem defined_rails_checker
$ cd defined_rails_checker/
$ vim defined_rails_checker.gemspec
# TODOを適当に埋める
$ vim lib/defined_rails_checker.rb
puts "###### defined rails checker"
if defined?(Rails)
puts "OK! I love rails."
else
raise "NO!!! I need rails!"
end
アプリケーション
$ vim Gemfile
# frozen_string_literal: true
source 'https://rubygems.org'
ruby '2.7.3'
gem 'defined_rails_checker', path: '~/Documents/Temporary/defined_rails_checker'
gem 'rails'
$ bundle
$ ./bin/rails s
###### defined rails checker
OK! I love rails.
というわけで、大丈夫そうだった。
以下のような行儀の悪い運用スクリプトとかがいて、
それをrunnerじゃなく、単体で実行したい場合とかには気にする必要がありそう?
(そんなケースはあるのか??)
# ActiveSupport使いたいだけだけど、全部読み込む!
Bundler.require