Это происходит в пакете Puppet's.
Gemfile
указывает
gem "puppet", :path => File.dirname(__FILE__), :require => false
Но один из камней, которые я установил в $GEM_HOME
, появляется в $:
в конце концов.
$ bundle exec ruby -e 'puts $:'
...
/home/puppy/puppet-git-clone/lib
...
/usr/lib/ruby/vendor_ruby
...
/home/puppy/gems/gems/puppet-3.7.5/lib
...
Это не проблема сама по себе, но, по-видимому, Ruby будет загружать Puppet 3.7.5
вместо 3.7.3
, который я проверил из репозитория git.
$ bundle exec irb
irb(main):001:0> require 'puppet'
=> true
irb(main):002:0> Facter.value(:puppetversion)
=> "3.7.5"
Почему Puppet не загружается из дерева git и как я могу отлаживать это дальше?
Update
Могут быть задействованы куклы .gemspec
. Это умный об определении версии. Теперь я беспокоюсь, что Rubygems фактически загружает установленный 3.7.5
драгоценный камень, так что Puppet.version
правдиво сообщает неправильное значение, отбрасывая связующее. Может быть, что происходит?
Обновление 2
Как было предложено в комментариях, я попытался установить путь и версию статически в Gemfile
.
gem "puppet", "3.4.2", :path => "/home/puppy/puppet-git-clone", :require => false
Что касается результата, то, по крайней мере, bundler
является последовательным в его представлениях; -)
Could not find gem 'puppet (= 3.4.2) ruby' in source at /home/ffrank/git/puppet.
Source contains 'puppet' at: 3.7.3
Run `bundle install` to install missing gems.