我的 .gemspec 文件中不需要第三方代码。我想需要一个 semver 库来管理我的版本号。为什么我的 .gemspec 中不能要求 gems?
对于我的特定问题,我有一个解决方法。我对我不能从 gemspec 中要求代码的具体原因感兴趣。我觉得我错过了关于 Rubygems 如何工作的一些东西。谢谢!
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'semver'
Gem::Specification.new do |spec|
spec.add_dependency "semver2", "~> 3.4.2"
spec.version = SemVer.find.to_s[1..-1]
end
运行 bundle install 会导致以下错误:
$ bundle
[!] There was an error parsing `Gemfile`: There was a LoadError while loading example.gemspec:
cannot load such file -- semver from
/opt/pose/auto/stack-overflow/example/example.gemspec:3:in `<main>'
显然,在某些时间点之前,您不能依赖 3rd 方 gems 在您的 LOAD_PATH 上。我要求解释这一点在哪里。我的猜测是因为我的 Gemfile 引用了我的 gemspec,而 Bundler 尚未加载所有依赖项,但这是一个猜测。