2012-03-06 16 views
2

私は多くのオプションのコンポーネントを持つアプリケーションを持っています。それらはそれぞれ独自の複雑な依存関係を持っています。たとえば、一部のデプロイメントではLDAP機能を使用する場合があり、LDAP関連のGemをロードする必要があります。しかし、多くの人はそうではありませんし、ldap関連の宝石をインストールする必要はありません。実行時にバンドルで依存関係をロードする

ユーザ(デプロイヤ)が有効にしたコンポーネントによって、Bundlerを使用してこれらの依存関係をロードするにはどうすればよいですか?

デプロイヤに手動でGemfilesを強制的に編集させたくありません。アプリケーションのUIを使用してコンポーネントを有効/無効にする必要があります。

Gemfileに可能性のあるすべての依存関係を含めても理想的ではありません。まれに使用されるコンポーネントの中には、複雑なネイティブコンパイルが必要なものがあります。もう1つの解決策は、アプリケーションに独自のGemfileを編集させることです。しかし、これは扱いにくいもので、コンポーネントが変更されるたびに再起動が必要になる可能性があります。

実行時にBundlerが宝石を動的にロードする方法はありますか?そうでない場合は、Bundlerのサンドボックス機能のような機能を提供するが、動的な読み込みを可能にする代替機能はありますか?

+0

[このバンドラー機能要求(https://github.com/carlhuda/bundler/issues/1636)を参照してください関連する可能性があります。 –

+0

そのリンクAndrewをありがとう。その機能要求が満たされれば、より良い形になるだろうと思うが(ちょっと - これは良いだろうが)、Bundle.gem "gemname"のようなものを私のアプリの中で呼び出すことができたらコード。私はBundlerの現在のアーキテクチャーでは不可能かもしれない気持ちを持っていますが、このようなことができる他の同様のプロジェクトがあるかどうかは疑問です。 –

答えて

0

複数のGemファイルを提供し、bundle-installを使用して特定のgemfileを使用し、その展開に必要なGemファイルのみをインストールすることができます。お使いのアプリケーションで

あなたは、単に適切な宝石

確かにthatsのない素晴らしく、簡単な方法をロードするために、以前にインストールGemfileの適切なグループにBundle.setupを使用することができますが、あなたが望む機能を与える必要があります。

Bundler Setup

bundle install
関連する問題