environment.rbのconfig.gem
-
06-07-2019 - |
質問
Railsアプリで、アプリで使用するいくつかのgemがあるとしましょう(" primary gems "と呼びます)。移植性のためにそれら。
これらの" プライマリジェム"独自の宝石も必要です-これらを「セカンダリ宝石"」と呼びます。
environment.rbをセットアップするときは、次のように言う必要があります。
config.gem 'primary-gem'
直接使用している宝石のいずれか。
しかし、あなたも言う必要がありますか。 。 。
config.gem 'secondary-gem'
アプリでそのgemを明示的に使用していない場合でも
または、 vendor / gems
ディレクトリにgemを含めるだけで、アプリで取得できるようになりますか?
解決
デプロイ時にRailsは依存関係を認識しているため、gemをフリーズしたい場合は実行できます
rake gems:unpack:dependencies
ベンダーディレクトリにそれらを凍結します。
ただし、実行時には依存関係を読み込むのはgemの仕事であり、通常はgemがこれを行うため、config.gem 'primary'が機能するはずです。
他のヒント
いいえ、あなたはそうしないか、少なくともそうすべきではありません。各GEM仕様には、独自の依存関係のリストを含める必要があります。プライマリgemがインストールされると、RubyGemsはカスケードに各gem依存関係を自動的にインストールします。
つまり、AがC + Dを必要とするBを必要とする場合、書く必要があるのは
config.gem 'A'
コマンドの場合
gem install A
が実行されると、RubyGemsはすべての依存関係を解決してインストールします。 (Railsプロジェクトから)実行中のすべてのA依存関係を表示できます
rake gems
GEMの作成者は、仕様にGEMの依存関係を含めるのを忘れることがあります。この場合、environment.rbでそれらを指定して、アプリケーションにそれらを強制的にインストールさせる必要があります。もちろん、問題を解決できるようにGEMメンテナーに連絡することもお勧めします。