我与以下人员之间存在冲突 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 时不会加载库和依赖项。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top