gem依赖关系定义与这些宝石的 require 之间存在冲突。
我有这个:
# 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
并再次取消注释不需要的内容。
欢迎提出任何建议,如果您需要更多细节来了解问题,请告诉我。
答案 0 :(得分:3)
首先,不要在你的gemspec中需要你的整个宝石。将您的版本信息移动到类似“lib / my_gem / version.rb”的路径并要求它。其次,除非您使用Rubygems API来实现某些功能,否则不应该执行“require'rubygems'”。有些用户不使用Rubygems,除非必要,否则不应强迫他们使用它。
答案 1 :(得分:1)
1.-不要求库中的'rubygems'。就像unix程序需要apt-get一样,所以没有其他系统不能使用你的库。
2.-在库中,将您的版本放在单独的文件/lib/lib_name/version.rb中,并在gemspec上要求该文件。只有该文件,因此在尝试加载gemspec时不会加载库和依赖项。