91

mygem.gemspec内にgitブランチの依存関係がある可能性はありますか?

私は次のようなことを考えています:

gem.add_runtime_dependency 'oauth2', :git => 'git@github.com:lgs/oauth2.git'

...しかしそれは機能しません。

4

5 に答える 5

47

これは不可能であり、可能性もありません。Gem 開発者が、gem にアクセスするために特定のバージョン管理システムがインストールされていることをユーザーに要求できるようにすることは、RubyGems にとって非常に手間がかかるためです。Gem は、可能な限り幅広いアプリケーションで使用できるように、依存関係の数を最小限に抑えて自己完結型にする必要があります。

独自の内部プロジェクトでこれを行いたい場合は、これを非常にうまくサポートするBundlerを使用することをお勧めします。

于 2011-06-27T22:04:30.783 に答える
14

編集

コメンターによると、これはもはや真実ではありません。歴史的な文脈のために保持された以前の情報。

Gemfile と .gemspec で gem への参照を複製すると、Bundler で警告メッセージが表示されるようになったため、この回答は当てはまらないように見えます。

古い情報

Yehuda Katz によるこの記事は、私にとって同様の混乱を解消しました。開発でのみ使用する場合は、git のものを gemfile に追加するのが最善ですが、そのバンドラーはまだ gemspec の依存関係/バージョン情報を使用します (私には魔法のように思えますが、Yehuda を信頼しています)。

于 2013-07-28T22:54:06.467 に答える
2

私はかなり簡単な回避策を見つけました:

プロジェクトに参加していて、それ自体が OS gemPを使用する自作の gem を使用したいとします。toolsoauth2

oauth2でパッチを作成し、gem でそのパッチが必要な場合、受け入れられた answertoolsに従って gem でこの問題を修正することはできません。

ただし、 projet の Gemfile 内で必要なバージョンを指定できます。これが実行時にP使用されるバージョンになります。tools

gem 'oauth2', github: 'lgs/oauth2'

これが私の実際の例です。

于 2019-09-19T10:23:34.340 に答える