【问题标题】:Bundler "Could not find rake" "in any of the sources"Bundler “在任何来源中都找不到 rake”
【发布时间】:2017-07-18 16:14:12
【问题描述】:

我有一个 rake 任务,其命名空间包含两个任务,startstop。我namespace:stopped,然后又namespace:started,然后......捆绑器向我炸毁了:

/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 的乘客可以毫无问题地显示该应用程序。我已经重新安装了 rvm、Ruby、Rails 等。bundle exec rake namespace:startbin\rake namespace:start 引发了相同的错误消息。

我已将其发布为 a bug in bundler (with environment details),但它可能不是错误,而是路径、权限或...的配置问题?

【问题讨论】:

  • 你能出示你的htaccess文件吗?

标签: ruby-on-rails ruby rake bundler


【解决方案1】:

请务必在 Gemfile 所在的目录中通过 bundler 调用 rake:

bundle exec rake namespace:start

它将确保您的捆绑包中的宝石可用。

【讨论】:

  • 对不起,我应该注意到我确实尝试过这个,以及 bin/rake -- 两者都导致相同的错误消息
【解决方案2】:

我终于意识到我的愚蠢错误。希望我的尴尬可以拯救别人。我遵循了一些建议来解决 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。

作为参考,不会导致 Rails 选择错误 Ruby 版本的 mini_magick 问题的修复方法是对 mogrify 进行符号链接(而不是将行添加到 production.rb):

$ sudo ln -s /usr/bin/mogrify /usr/local/bin/mogrify

(大量转载自我的GitHub issue response。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 2012-04-19
    • 2015-03-04
    • 2014-07-11
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多