捆绑器 "Could not find rake" "in any of the sources"
Bundler "Could not find rake" "in any of the sources"
我有一个 rake 任务,它的命名空间包含两个任务,start
和 stop
。我 namespace:stop
ped,然后 namespace:start
ed 再次,然后...... bundler 向我爆炸:
/home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/spec_set.rb:87:in `block in materialize': Could not find rake-12.0.0 in any of the sources (Bundler::GemNotFound)
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/spec_set.rb:80:in `map!'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/spec_set.rb:80:in `materialize'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/definition.rb:176:in `specs'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/definition.rb:235:in `specs_for'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/definition.rb:224:in `requested_specs'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/runtime.rb:118:in `block in definition_method'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/runtime.rb:19:in `setup'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler.rb:100:in `setup'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/setup.rb:20:in `<top (required)>'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
bundle install
有效,rake, version 12.0.0
已安装,rails c
启动正常。使用 Apache 的 Passenger 可以毫无问题地显示应用程序。我重新安装了 rvm、Ruby、Rails 等。bundle exec rake namespace:start
和 bin\rake namespace:start
引发了相同的错误消息。
我已将其发布为 a bug in bundler (with environment details),但它可能不是错误,而是路径、权限或...某些方面的配置问题?
请务必在您的 Gemfile 所在的目录中通过捆绑程序调用 rake:
bundle exec rake namespace:start
它将确保您的捆绑包中的 Gem 可用。
我终于意识到我犯了一个非常愚蠢的错误。希望我的尴尬可以挽救别人的尴尬。我遵循了一些建议来修复 an issue with the gem mini_magick 无法调整看起来有点像这样的图像:
$ cat config/environments/production.rb
# ...
ENV['PATH'] = "/usr/bin:#{ENV['PATH']}"
我终于意识到导致这种奇怪情况的原因:
$ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
$ irb
2.4.0 :001 > `ruby -v`
=> "ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]\n"
2.4.0 :001 > quit
$ rails c production
Loading production environment (Rails 5.0.1)
2.4.0 :001 > `ruby -v`
=> "ruby 2.0.0p648 (2015-12-16) [x86_64-linux]\n"
如您所见,Rails 正在选择不同版本的 Ruby -- 事实上,系统 Ruby,而不是我的 RVM 管理的 Ruby 2.4.
作为参考,对 mini_magick 问题的修复不会导致 Rails 选择错误的 Ruby 版本是符号链接 mogrify(而不是将行添加到 production.rb):
$ sudo ln -s /usr/bin/mogrify /usr/local/bin/mogrify
(大量转载自我的 GitHub issue response。)
我有一个 rake 任务,它的命名空间包含两个任务,start
和 stop
。我 namespace:stop
ped,然后 namespace:start
ed 再次,然后...... bundler 向我爆炸:
/home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/spec_set.rb:87:in `block in materialize': Could not find rake-12.0.0 in any of the sources (Bundler::GemNotFound)
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/spec_set.rb:80:in `map!'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/spec_set.rb:80:in `materialize'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/definition.rb:176:in `specs'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/definition.rb:235:in `specs_for'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/definition.rb:224:in `requested_specs'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/runtime.rb:118:in `block in definition_method'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/runtime.rb:19:in `setup'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler.rb:100:in `setup'
from /home/user/.rvm/gems/ruby-2.4.0/gems/bundler-1.14.5/lib/bundler/setup.rb:20:in `<top (required)>'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'
bundle install
有效,rake, version 12.0.0
已安装,rails c
启动正常。使用 Apache 的 Passenger 可以毫无问题地显示应用程序。我重新安装了 rvm、Ruby、Rails 等。bundle exec rake namespace:start
和 bin\rake namespace:start
引发了相同的错误消息。
我已将其发布为 a bug in bundler (with environment details),但它可能不是错误,而是路径、权限或...某些方面的配置问题?
请务必在您的 Gemfile 所在的目录中通过捆绑程序调用 rake:
bundle exec rake namespace:start
它将确保您的捆绑包中的 Gem 可用。
我终于意识到我犯了一个非常愚蠢的错误。希望我的尴尬可以挽救别人的尴尬。我遵循了一些建议来修复 an issue with the gem mini_magick 无法调整看起来有点像这样的图像:
$ cat config/environments/production.rb
# ...
ENV['PATH'] = "/usr/bin:#{ENV['PATH']}"
我终于意识到导致这种奇怪情况的原因:
$ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
$ irb
2.4.0 :001 > `ruby -v`
=> "ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]\n"
2.4.0 :001 > quit
$ rails c production
Loading production environment (Rails 5.0.1)
2.4.0 :001 > `ruby -v`
=> "ruby 2.0.0p648 (2015-12-16) [x86_64-linux]\n"
如您所见,Rails 正在选择不同版本的 Ruby -- 事实上,系统 Ruby,而不是我的 RVM 管理的 Ruby 2.4.
作为参考,对 mini_magick 问题的修复不会导致 Rails 选择错误的 Ruby 版本是符号链接 mogrify(而不是将行添加到 production.rb):
$ sudo ln -s /usr/bin/mogrify /usr/local/bin/mogrify
(大量转载自我的 GitHub issue response。)