15

gem(X) を作成しましたが、公開されていません。今、私は宝石 X を次のような依存関係として追加する別の宝石を作成しています:-

s.add_dependency "X"

gemspec ファイルで。

gem(X) は ruby​​gem、git、または ruby​​forge にないため、bundle install コマンドは次のエラーをスローします。

gem X** が見つかりませんでした

X のパスを指定すればうまくいくと思いますが、どうすればよいでしょうか。

4

2 に答える 2

20

git 参照に関する SO の投稿で @bor1s が何を指していたかがわかると思います。

このgemspecファイルは、gem を公開するための依存関係に関するものです。通常Gemfileは を呼び出して、開発用のローカル環境をセットアップしますgemspec

あなたの場合、gemspecこれが必要です

s.add_dependency "X"

そして、あなたGemfileは次のようになります(ローカル参照がgemspec呼び出しの後にあることを確認してください):

source "http://www.rubygems.org"
gemspec
gem "X", :path => "/Users/vikram/source/X"

gemspec と Bundler に関するYahuda Katz のブログ投稿からの引用

まだリリースされていない gem に対して開発する必要があることがわかった場合 (たとえば、Rails はリリースされていない Rack、Arel、または Mail の gem に対して開発することがよくあります)、Gemfile に個別の行を追加して、バンドラーに場所を伝えることができます。宝石。依存関係の解決のために .gemspec にリストされている依存関係を引き続き使用しますが、gem 開発中に依存関係を見つける場所を正確に認識できるようになりました。

source "http://www.rubygems.org"

gemspec

# if the .gemspec in this git repo doesn't match the version required by this
# gem's .gemspec, bundler will print an error
gem "rack", :git => "git://github.com/rack/rack.git"

この情報を .gemspec に含めたくないでしょう。.gemspec は、開発中の gem もリリースされた後に最終的に Rubygems にリリースされます。繰り返しになりますが、一時的な外部 URL に依存しないため、システム全体の回復力が向上します。この情報は、開発中に完全な環境を設定するために純粋に使用されるものであり、ある程度の精度が必要です。

于 2014-04-08T22:50:47.550 に答える
0

ここであなたの質問に対する答えを見つけることができると思います: Gem の依存関係

それが役立つことを願っています。

于 2012-07-11T08:09:12.507 に答える