-1

.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 がすべての依存関係をまだロードしていないためですが、それは推測です。

4

1 に答える 1