mygem.gemspec内にgitブランチの依存関係がある可能性はありますか?
私は次のようなことを考えています:
gem.add_runtime_dependency 'oauth2', :git => 'git@github.com:lgs/oauth2.git'
...しかしそれは機能しません。
mygem.gemspec内にgitブランチの依存関係がある可能性はありますか?
私は次のようなことを考えています:
gem.add_runtime_dependency 'oauth2', :git => 'git@github.com:lgs/oauth2.git'
...しかしそれは機能しません。
これは不可能であり、可能性もありません。Gem 開発者が、gem にアクセスするために特定のバージョン管理システムがインストールされていることをユーザーに要求できるようにすることは、RubyGems にとって非常に手間がかかるためです。Gem は、可能な限り幅広いアプリケーションで使用できるように、依存関係の数を最小限に抑えて自己完結型にする必要があります。
独自の内部プロジェクトでこれを行いたい場合は、これを非常にうまくサポートするBundlerを使用することをお勧めします。
編集
コメンターによると、これはもはや真実ではありません。歴史的な文脈のために保持された以前の情報。
Gemfile と .gemspec で gem への参照を複製すると、Bundler で警告メッセージが表示されるようになったため、この回答は当てはまらないように見えます。
古い情報
Yehuda Katz によるこの記事は、私にとって同様の混乱を解消しました。開発でのみ使用する場合は、git のものを gemfile に追加するのが最善ですが、そのバンドラーはまだ gemspec の依存関係/バージョン情報を使用します (私には魔法のように思えますが、Yehuda を信頼しています)。
私はかなり簡単な回避策を見つけました:
プロジェクトに参加していて、それ自体が OS gemP
を使用する自作の gem を使用したいとします。tools
oauth2
内oauth2
でパッチを作成し、gem でそのパッチが必要な場合、受け入れられた answertools
に従って gem でこの問題を修正することはできません。
ただし、 projet の Gemfile 内で必要なバージョンを指定できます。これが実行時にP
使用されるバージョンになります。tools
gem 'oauth2', github: 'lgs/oauth2'