2011-07-19 3 views
1

私はRailsプラグインを作成しています(はい、宝石ではなくプラグインが必要です)。自慢の宝石の犠牲を伴うRailsプラグインを含んでいますか?

このプラグインにはいくつかの宝石の依存関係があります。私の最初の考えは、プラグインディレクトリのルートにあるGemfileの依存関係をリストすることでした。 install.rbから

は、私は次のようでした:

require 'rubygems' 
require 'bundler/setup' 
Bundler.require 

しかしバンドラは間違いなく、これらの依存関係はありません:

`bundle install` 

そしてinit.rbから、私は次のことをやりました。

私はではありませんは、ルートGemfileのgemの依存関係を一覧表示する必要があります。

これらの宝石をプラグインに含める方法はありますか?エンドユーザーが自分のGemfileを変更しなくても機能しますか? Railsプラグインの宝石依存関係を引き出すための他のメカニズムがあれば、私はBundlerを一本化することに反対していませんか?

答えて

1

宝石の環境(宝石セットなど)は既にアプリによって設定されているため、宝石は必要ありません。

プラグインがアプリケーション内で実行されるという単純な理由から、プラグインのgem envをアプリケーションのgem envから隔離することはできません。

このように、プラグインはアプリのgem envで動作します。

アプリのgem envがBundlerによって管理されている場合、依存関係はアプリのGemfileに定義されている必要があります。それ以外の場合は、Bundlerによって隔離されたgem env内では、プラグインの内部から何が必要なのかにかかわらず利用できません。

これは、プラグインを宝石としてリリースする方が現実的である理由の1つです。

関連する問題