【问题标题】:Rake is in my Gem path and yet Bundler can not find itRake 在我的 Gem 路径中,但 Bundler 找不到它
【发布时间】:2016-11-24 01:55:55
【问题描述】:

Bundler 找不到 Rake。

如何修复我的 Gem 路径,以便将我的 Ruby gem 安装在 Bundler 可以找到的位置?

如果我这样做:

  gem env

我明白了:

  RubyGems Environment:
    - RUBYGEMS VERSION: 2.0.14
    - RUBY VERSION: 2.0.0 (2015-04-13 patchlevel 645) [universal.x86_64-darwin15]
    - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
    - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
    - EXECUTABLE DIRECTORY: /usr/local/bin
    - RUBYGEMS PLATFORMS:
      - ruby
      - universal-darwin-15
    - GEM PATHS:
       - /Library/Ruby/Gems/2.0.0
       - /Users/lkrubner/.gem/ruby/2.0.0
       - /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
    - GEM CONFIGURATION:
       - :update_sources => true
       - :verbose => true
       - :backtrace => false
       - :bulk_threshold => 1000
       - "install" => "--no-ri --no-rdoc"
       - "update" => "--no-ri --no-rdoc"
    - REMOTE SOURCES:
       - https://rubygems.org/

还有瑞克在那儿:

   ls -al /Library/Ruby/Gems/2.0.0/gems 

   rake-0.9.6
   rake-10.4.2
   rake-11.2.2
   rdoc-4.0.0
   test-unit-2.0.0.0

但是对于当前的项目,这些都不重要。

我正在从另一个开发人员那里接手一个 Rails 项目。

Rails 4.2

耙 11..2.2

Ruby 2.0.0

如果我进去

  .bundler/config

我明白了:

  BUNDLE_PATH: vendor/cache
  BUNDLE_DISABLE_SHARED_GEMS: '1'

如果我使用“查找”,我可以看到我已经安装了多个版本的 Rake:

  vendor/cache/rake-11.2.2.gem
  vendor/cache/ruby/2.1.0/gems/rake-10.5.0/
  vendor/cache/ruby/2.1.0/gems/rake-11.2.2
  vendor/cache/ruby/2.1.0/gems/rake-10.4.2

但其中大部分将进入 ruby​​ 2.1 文件夹,而不是 2.0。

但如果我尝试:

  bundle exec rake db:setup

我明白了:

  Could not find rake-11.2.2 in any of the sources

我尝试过“捆绑安装”。

我已经尝试删除 Gemfile.lock。

我试图避免使用“bundle exec”。

我什么都做不了。

我只需要让系统使用一个路径。版本不是很重要。

如何让所有内容都在一条路径上达成一致?

如果我运行“捆绑安装”,那么在输出中我会看到“使用 rake 11.2.2”。因此,当 Bundler 执行“安装”任务时,“捆绑”命令会看到 rake,但在执行“执行”任务时不会。

顺便说一句:

  which rake
  /usr/local/bin/rake

这是硬编码到 Ruby 2.0 版本的:

  #!/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
  #
  # This file was generated by RubyGems.
  #
  # The application 'rake' is installed as part of a gem, and
  # this file is here to facilitate running it.
  #

  require 'rubygems'

  version = ">= 0"

  if ARGV.first
    str = ARGV.first
    str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
    if str =~ /\A_(.*)_\z/
      version = $1
      ARGV.shift
    end
  end

  gem 'rake', version
  load Gem.bin_path('rake', 'rake', version)

[[更新]]

[[更新]]

我删除了:

.bashrc

.bash_profile

.zshrc

然后我跑了:

   chsh -s /bin/bash

我在 Mac 上。这应该将我的 shell 从 zsh 更改为 bash。

然后我在终端窗口中重新开始,以确保所有更改都已加载。

现在,如果我运行“捆绑安装”,gems 似乎会安装到 vendor/cache/ 但我收到此错误:

  Installing paperclip 5.0.0
  Gem::InstallError: paperclip requires Ruby version >= 2.1.0.

所以我跑了:

  rbenv install 2.1.0

然后我再次运行“捆绑安装”,我得到了同样的错误。

红宝石版本是:

  ruby -v
  ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]

有什么建议吗?

如果我跑:

  gem env

我明白了:

 - GEM PATHS:
   - /Users/lkrubner/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0
   - /Users/lkrubner/.gem/ruby/2.3.0

【问题讨论】:

  • gem 'rake' 是否包含在您的 Gemfile 中?
  • 试试bundle exec gem list | grep rake 看看您是否安装了多个版本以及这些版本的列出顺序。然后你使用gem uninstall rake 并选择你想要删除的版本,直到你只有正确的版本。
  • @Holger -- 我已经尝试了 3 种方法:在 Gemfile 中没有“rake”,在 Gemfile 中使用它但没有指定版本,以及使用它并指定版本。没有任何效果。
  • @jaydel -- 如果我运行“bundle exec gem list”,我只会收到错误消息:“在任何来源中都找不到 rake-11.2.2”
  • 如果我运行“捆绑安装”,那么在输出中我会看到“使用 rake 11.2.2”。因此,当 Bundler 执行“安装”任务时,“捆绑”命令会看到 rake,但在执行“执行”任务时不会看到。

标签: ruby-on-rails ruby rake bundler


【解决方案1】:

我想这已经解决了。删除所有 .bashrc 和 .bash_profile 和 .zshrc 并将默认 shell 更改回 bash 并删除所有提及 rvm 并重新安装 rbenv 并重新安装“gem”然后“Bundler”似乎至少可以解决一些路径问题。我通过执行“gem install paperclip”解决了Paperclip的问题,我猜它在全球范围内安装了回形针,但至少它适用于我的本地Mac。非常脆弱,但一切正常。

我希望我可以在这个项目中使用 Clojure。每次我与 Ruby 纠缠不清时,我最终都会与这个无尽迷宫般的路径问题搏斗。使用 Clojure,我受到 Leiningen 的保护,它似乎用纯粹的魔法解决了这些问题。

【讨论】:

    【解决方案2】:

    我刚刚运行 gem update bundler 来解决这个问题。

    【讨论】:

      猜你喜欢
      • 2014-06-28
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      相关资源
      最近更新 更多