.gemspec ファイルでサード パーティのコードを要求することはできません。バージョン番号を管理するために、semver ライブラリを要求したいと考えています。.gemspec 内で gem を要求できないのはなぜですか?
特定の問題に対する回避策があります。gemspec内からコードを要求できない特定の理由に興味があります。Rubygem がどのように機能するかについて、何かが欠けているように感じます。ありがとう!
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>'
明らかに、サードパーティの gem が LOAD_PATH にあることに依存できないポイントがあります。その点がどこにあるのか説明を求めています。私の推測は、私の Gemfile が私の gemspec を参照しており、Bundler がすべての依存関係をまだロードしていないためですが、それは推測です。