質問

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メンテナーに連絡することもお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top