質問

間に対立があります GEM依存関係の定義 そしてその 必要とする これらの宝石の。

私はこれを持っています:

# Gemfile
source "http://rubygems.org"
gemspec

-

# my_gem.gemspec
$:.push File.expand_path("../lib", __FILE__)
require "my_gem"

Gem::Specification.new do |s|
  s.version = MyGem::VERSION
  # ...
  s.add_dependency "s3"
end

-

# /lib/my_gem.rb
require 'rubygems'
require 's3'

競合ラインはです S3要件 私が実行するとき bundle install この宝石はまだインストールされていないため、文句を言います。

回避策は、これが必要なコメントをしてから実行してから実行します bundle install そして、もう一度きれいではないものをもう一度必要とします。

問題を理解するために詳細が必要な場合は、お勧めします。教えてください。

役に立ちましたか?

解決

まず、gemspecに宝石全体を必要としないでください。バージョン情報を「lib/my_gem/version.rb」のようなパスに移動し、それを要求します。第二に、いくつかの機能にRubygems APIを使用していない限り、「Rubygems」を必要とするべきではありません。 Rubymsを使用しないユーザーがいます。必要でない限り使用するように強制しないでください。

他のヒント

1.-ライブラリで「Rubygems」を必要としないでください。 UNIXプログラムがAPT-Getを必要とする場合のようなものであるため、他のシステムはライブラリを使用できません。

2.-ライブラリで、バージョンを別のファイル/lib/lib_name/version.rbに入れて、GEMSPECでそのファイルを要求します。そのファイルのみであるため、GEMSPECをロードしようとするときはライブラリや依存関係をロードしません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top