私は多くのオプションのコンポーネントを持つアプリケーションを持っています。それらはそれぞれ独自の複雑な依存関係を持っています。たとえば、一部のデプロイメントではLDAP機能を使用する場合があり、LDAP関連のGemをロードする必要があります。しかし、多くの人はそうではありませんし、ldap関連の宝石をインストールする必要はありません。実行時にバンドルで依存関係をロードする
ユーザ(デプロイヤ)が有効にしたコンポーネントによって、Bundlerを使用してこれらの依存関係をロードするにはどうすればよいですか?
デプロイヤに手動でGemfilesを強制的に編集させたくありません。アプリケーションのUIを使用してコンポーネントを有効/無効にする必要があります。
Gemfileに可能性のあるすべての依存関係を含めても理想的ではありません。まれに使用されるコンポーネントの中には、複雑なネイティブコンパイルが必要なものがあります。もう1つの解決策は、アプリケーションに独自のGemfileを編集させることです。しかし、これは扱いにくいもので、コンポーネントが変更されるたびに再起動が必要になる可能性があります。
実行時にBundlerが宝石を動的にロードする方法はありますか?そうでない場合は、Bundlerのサンドボックス機能のような機能を提供するが、動的な読み込みを可能にする代替機能はありますか?
[このバンドラー機能要求(https://github.com/carlhuda/bundler/issues/1636)を参照してください関連する可能性があります。 –
そのリンクAndrewをありがとう。その機能要求が満たされれば、より良い形になるだろうと思うが(ちょっと - これは良いだろうが)、Bundle.gem "gemname"のようなものを私のアプリの中で呼び出すことができたらコード。私はBundlerの現在のアーキテクチャーでは不可能かもしれない気持ちを持っていますが、このようなことができる他の同様のプロジェクトがあるかどうかは疑問です。 –