2013-10-21 4 views
8

私はのgit - フォークした2つの宝石(たとえばFOOバー)、その他に応じて1:gemspec add_dependencyエントリでGitのパスを指定し

foo.gemspec

... 
s.add_dependency "bar" 

foo私のフォークはバーの私のフォークに依存していますが、オリジナルではありませんバー gemです。

しかし、これは動作しません:

s.add_dependency "bar", git: 'git:github.com/vemv/bar.git' # => ArgumentError! 

.gemspecファイルに依存関係のソースを指定する方法は?

できない場合はどうすればよいですか?

答えて

10

いいえ.gemspecファイルでこれを行うことはできません。

私はBundler gitの機能を参照していると思います。構文は同じように見えます。

フォークされたgemを開発するには、Gemfileに依存関係を設定し、それを.gemspecファイルから削除する必要があります。

私はあなたの質問では参照していない3番目のアプリケーションを両方使用していることを前提としています。私は、最も簡単な解決策はBundler :path機能を使って両方の宝石を直接参照することだと思います。これは、アプリケーションに宝石を売りに出さない限り、展開したいシナリオでは機能しません。

全体的に、これは難しいことです。特に、サードパーティのlibに依存関係やその他の小さなものを修正したいだけの場合は特にそうです。この点でBundlerは柔軟性がありません。

+0

説明をありがとう。今は 'gemspec'を呼び出す前に、gem依存関係をGemfileに追加しようとしました。それは動作しません - 私は結果の宝石に依存するとき、私は 'LoadError'を取得します。これはgitの依存関係が取得されることを意味しますが、必須ではありません。 – vemv

+0

Gemfileにどこに置いても問題ありません。そのファイルから依存関係を読み込むには、lib内でそれを要求するか、 'Bundle.setup'を呼び出す必要があります。 – phoet

関連する問題