gemspec 依赖项定义和 require 冲突
题
我与以下人员之间存在冲突 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 尚未安装。
解决方法是注释掉这个require,然后执行 bundle install
并再次取消注释根本不漂亮的要求。
欢迎任何建议,如果您需要更多详细信息来了解问题,请告诉我。
解决方案
首先,不需要您在宝石中的整个宝石。将您的版本信息移至“ lib/my_gem/version.rb”之类的路径上,并需要。其次,除非您将RubyGems API用于某些功能,否则您不应该执行“需要'RubyGems'”。有些用户不使用RubyGem,除非有必要,否则您不应强迫他们使用它。
其他提示
1.- 库中不需要“rubygems”。就像如果一个 unix 程序需要 apt-get,那么其他系统就不能使用你的库。
2.- 在库中,将您的版本放入单独的文件 /lib/lib_name/version.rb 中,并在 gemspec 上要求该文件。只有该文件,因此在尝试加载 gemspec 时不会加载库和依赖项。
不隶属于 StackOverflow