0

gem の依存関係の定義とこれらの 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

この問題を回避するには、require にコメントを付けてから実行bundle installし、require を再びコメント解除します。

問題を理解するために詳細が必要な場合は、ご意見をお聞かせください。

4

2 に答える 2

3

まず、gemspecにgem全体を含める必要はありません。バージョン情報を「lib/my_gem / version.rb」のようなパスに移動し、それを要求します。次に、一部の機能にRubygems APIを使用している場合を除き、「require'rubygems'」を実行しないでください。Rubygemsを使用しないユーザーもいるので、必要な場合を除いて、Rubygemsを使用するように強制しないでください。

于 2011-07-25T20:33:48.253 に答える
1

1.- ライブラリで「rubygems」を要求しないでください。unix プログラムが apt-get を必要とするようなものなので、他のシステムはライブラリを使用できません。

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

于 2011-07-25T22:38:28.093 に答える