これを行います:
gem 'whenever', require: false
gem をインストールする必要があるということですか、それとも必要ないということですか?
これは、gemをインストールすることを意味しますが、Bundlerを起動するときにrequireを呼び出さないでください。したがって、手動で呼び出す必要があります
require "whenever"
ライブラリを使用したい場合。
あなたがするなら
gem "whenever", require: "whereever"
その後、バンドラーはいつでも名前の付いた宝石をダウンロードしますが、
require "whereever"
これは、必要なライブラリの名前がgemの名前と異なる場合によく使用されます。
:require => false
gem をインストールしたいが「必須」ではない場合に使用します。
したがって、あなたが示した例では
gem 'whenever', :require => false
、誰かが bundle install を実行すると、常に gem が のようにインストールされgem install whenever
ます。rake タスクを実行して cron ジョブを作成するために使用されますが、通常、Rails (または Rails でない場合は他のフレームワーク) アプリケーション内からは使用されません。
:require => false
そのため、コマンド ラインから実行する必要があるものの、コード内では必要ないものには何でも使用できます。
require: false
Bundler.require
は、その特定の gem を要求しないように指示します。gem は、 を介して明示的に要求する必要がありますrequire 'gem'
。
このオプションは、以下には影響しません。
bundle install
: gem は関係なくインストールされます
バンドラーによるrequire
検索パスの設定。
次のいずれかを行うと、Bundler はパスに何かを追加します。
Bundle.setup
require bundler/setup
bundle exec
例
Gemfile
source 'https://rubygems.org'
gem 'haml'
gem 'faker', require: false
main.rb
# Fail because we haven't done Bundler.require yet.
# bundle exec does not automatically require anything for us,
# it only puts them in the require path.
begin Haml; rescue NameError; else raise; end
begin Faker; rescue NameError; else raise; end
# The Bundler object is automatically required on `bundle exec`.
Bundler.require
Haml
# Not required because of the require: false on the Gemfile.
# THIS is what `require: false` does.
begin Faker; rescue NameError; else raise; end
# Faker is in the path because Bundle.setup is done automatically
# when we use `bundle exec`. This is not affected by `require: false`.
require 'faker'
Faker
次に、以下は例外を発生させません。
bundle install --path=.bundle
bundle exec ruby main.rb
GitHubで遊んでみてください。
レールの使い方
初期化チュートリアルで説明されているように、デフォルトの Rails テンプレートは起動時に実行されます。
config/boot.rb
config/application.rb
config/boot.rb
内容:
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
これrequire 'bundler/setup'
により、必要なパスが設定されます。
config/application.rb
する:
Bundler.require(:default, Rails.env)
実際には宝石が必要です。
Gemfile で gem を要求するには、 を呼び出す必要がありますBundler.require
。
を使用して、バンドラーが gem を要求するのを防ぐことができますがrequire: false
、それでも gem をインストールして維持します。詳しい説明はこちらをご覧ください。