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它时会抱怨,因为尚未安装此 gem。

解决方法是注释此要求,然后再次执行bundle install并取消注释根本不漂亮的要求。

欢迎任何建议,如果您需要更多详细信息来理解问题,请告诉我。

4

2 回答 2

3

首先,不要在 gemspec 中要求整个 gem。将您的版本信息移动到“lib/my_gem/version.rb”之类的路径并要求它。其次,除非您将 Rubygems API 用于某些功能,否则不应执行“需要 '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 回答