mygem.gemspecの中にgitブランチ依存関係はありますか?Ruby Gemspec依存関係:gitブランチ依存関係はありますか?
私は、次のようなものと思っています:
gem.add_runtime_dependency 'oauth2', :git => '[email protected]:lgs/oauth2.git'
を...しかし、それは動作しません。
mygem.gemspecの中にgitブランチ依存関係はありますか?Ruby Gemspec依存関係:gitブランチ依存関係はありますか?
私は、次のようなものと思っています:
gem.add_runtime_dependency 'oauth2', :git => '[email protected]:lgs/oauth2.git'
を...しかし、それは動作しません。
RubyGemsが宝石にアクセスするために特定のバージョン管理システムをインストールしていることを宝石開発者に要求することができないため、これは不可能なことでしょう。宝石は最小限の依存関係で自己完結型でなければならないので、人々はできるだけ幅広いアプリケーションでそれらを使用できます。
自分の内部プロジェクトでこれを行う場合は、これを非常にうまくサポートするBundlerを使用することをお勧めします。
...はい、どうすればいいですか? –
私は、ファラデーやオウトウ2のように、古いファラデー(0.6.1)を指し示している他の多くのものを実際に再バンドルする宝石(オムニオス)を束ねます。私はそのネストされた依存関係を切り離そうとしていました... –
あなたは提案したのと同じように行いますが、Gemfileで行います。明示的なoauth2要件がない場合は、追加します( "gem 'oauth2'、:git => '....'")、バンドルinstall。 – gtd
EDIT
はコメンターによると、これはもはや真実ではありません。履歴情報のために保持される事前情報。
Gemfileと.gemspecのGemへの参照を複製すると、Bundlerで警告メッセージが表示されるようになり、この回答はもはや真実ではないようです。イェフダカッツによって
古い情報
This記事は私のために同様の混乱をクリア。 gemspecから依存関係/バージョン情報を引き続き使用することになります(私には魔法のようですが、Yehudaは信頼しています)。
それについて何が魔法ですか? BundlerはGemfileからのみ読み込みます。ただし、そこに 'gemspec'を置くとgemspecから読み込みます。ですから、 'bundle install'を実行すると、BundlerがGemfileに指定されたgemをインストールすることが想定されています(テストしていません)。 Bundlerは既にそれをインストールしているので、それが宝石倉庫から来ていないという事実にかかわらず、その宝石は '要求する 'ことができます。魔法はありません。いつものようにBundlerが働きます。 –
Gemfileと.gemspecの宝石への参照を複製すると、Bundlerで警告メッセージが表示されるようになったので、この答えはもはや真実ではないようです... –
私はこの問題も解決しようとしていました。そして、私はちょうどあなたがあなたの宝石を公開したり、そのoauth2 gemを再配布する権利を持っているかどうか分からない次の解決策を思いつきました。
oauth2 gemが必要なgemでは、これを実行します。あなたが別のデフォルト以外のブランチあなたのgemspecで
cd lib/oauth2 && git checkout <branchname_or_ref>
cd .. && git add lib/oauth2
git commit -m "adding outh2 submodule"
が必要な場合は
git submodule add [email protected]:lgs/oauth2.git lib/oauth2
あなたの必要バージョン線の上にこれを追加します。また
$:.push File.expand_path('../lib/oauth2/lib', __FILE__)
あなたはすべてを追加する必要がありますoauth2 gemのgemspecへのランタイム依存性。私はまだこれについての方法を考え出していない。
これは私がやったことです。私たちの宝石はgitによって必要とされるので、私たちのために働くので、これがrubygems公開宝石のためにうまくいくかどうかわかりません。
依存関係をサブモジュールとして追加することは、 2つの宝石と両方が執筆されています。 – benjineer
私はこの問題を抱えていますが、パスの依存関係は必要としますが、gitの依存関係は必要ありません。何とかこれを回避する方法はありませんか?たぶんどこかのgemspecにハックしたRubyコードを貼っているのでしょうか? – Ajedi32