【问题标题】:Updating Heroku gem, on RVM (OSX), has resulted in a LoadError and "broken" heroku gem. What is safest way to fix?在 RVM (OSX) 上更新 Heroku gem 导致 LoadError 和“损坏”的 heroku gem。什么是最安全的修复方法?
【发布时间】:2012-08-03 23:04:01
【问题描述】:

我在 OSX 10.6.8 上使用 RVM(v1.14.11 和 JewelryBox GUI)已经一年多了,没有任何问题。我安装了两个 ruby​​(1.9.2 和 1.9.3),以及每个 ruby​​ 的各种 gemset。

由于我刚刚完成将当前数据库迁移到他们的新产品,我想我不妨更新 heroku gem(2.14 版本)。所以我通过 rvm 选择了我的 ruby​​-1.9.2-p290@rails gemset,打开终端,然后运行“heroku udpate”。

我在更新过程中没有发现任何错误,但我尝试运行“heroku 版本”以及各种其他“heroku”命令,现在收到以下错误:

/Users/me/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- netrc (LoadError)
        from /Users/me/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/me/.heroku/client/lib/heroku/auth.rb:6:in `<top (required)>'
        from /Users/me/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/me/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/me/.heroku/client/lib/heroku/client.rb:4:in `<top (required)>'
        from /Users/me/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/me/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/me/.rvm/gems/ruby-1.9.2-p290@rails/gems/heroku-2.14.0/lib/heroku.rb:6:in `<top (required)>'
        from /Users/me/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/me/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from /Users/me/.rvm/gems/ruby-1.9.2-p290@rails/gems/heroku-2.14.0/bin/heroku:6:in `<top (required)>'
        from /Users/me/.rvm/gems/ruby-1.9.2-p290@rails/bin/heroku:19:in `load'
        from /Users/me/.rvm/gems/ruby-1.9.2-p290@rails/bin/heroku:19:in `<main>'

我注意到上面提到了“1.9.1”,这是我用 rvm 安装的原始 gemset,然后将其更新为“1.9.2”。也许这就是原因?

运行“宝石环境”给出:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.10
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin10.8.0]
  - INSTALLATION DIRECTORY: /Users/me/.rvm/gems/ruby-1.9.2-p290@rails
  - RUBY EXECUTABLE: /Users/me/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/me/.rvm/gems/ruby-1.9.2-p290@rails/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-10
  - GEM PATHS:
     - /Users/me/.rvm/gems/ruby-1.9.2-p290@rails
     - /Users/me/.rvm/gems/ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

我确实有另一个 gemset (ruby-1.9.3-p194@rails32),它也包含“heroku”gem,当我切换到它时,使用 rvm,使用它的“heroku”gem 没有问题。

由于 rvm/osx 安装有时可能是“喜怒无常的”,或者至少在过去是这样,我真的可以就出了什么问题提出一些建议,以及我该如何安全地修复破碎的宝石。

谢谢。

【问题讨论】:

标签: heroku gem rvm


【解决方案1】:

Gem netrcheroku 的依赖项,再次运行 gem install heroku 以安装所有依赖项。

【讨论】:

  • 在安装 ruby​​-1.9.2-p320、新 gemset 并在 RVM 下升级到 Rails 3.2.10 后,运行任何 Heroku 命令抛出:dyld: unknown required load command 0x80000022, Trace/BPT 陷阱.谷歌搜索建议这是一个 Git 问题(我正在运行 OSX 10.5.8),但最后 gem install heroku 修复了它。只是说'
【解决方案2】:

如果上述解决方案不起作用,请删除 heroku 客户端,我已经解决了同样的问题:

rm -rf ~/.heroku/client

【讨论】:

    【解决方案3】:

    在一些早期版本的更新程序中存在错误。我建议从https://toolbelt.heroku.com 重新下载并重新安装。完成此操作后,您应该拥有最新版本,并且随着新版本的继续发布,更新应该会按预期工作。

    【讨论】:

    • 我希望我按照Heroku command docs 尝试过gem update heroku.. 但我在执行以下操作(成功)后找到了那些:which heroku 让我记得我已经安装 heroku 作为宝石(/Users/foo/.rvm/gems/ruby-1.9.2-p290@bar/bin/heroku)。所以我卸载了它(gem uninstall heroku),然后通过toolbelt重新安装了Heroku命令,有工头,但没有git,因为我已经安装了git。我现在有heroku-toolbelt/2.32.4 (universal-darwin10.0) ruby/1.8.7 autoupdate
    • toolbelt 分别在/usr/local/git/bin/git/usr/local/heroku/bin/heroku/usr/local/foreman/bin/foreman 中安装githerokuforeman。我的系统(Mountain Lion)上预装的git 版本是1.7.10.2/usr/bin/git),而toolbelt 安装版本1.7.8.4latest stable git1.7.12.4brew 安装 1.7.12.3 (/usr/local/Cellar/git/1.7.12.3/bin/git)。
    【解决方案4】:

    gem install heroku 如果您在特定项目的 Gemfile 中拥有 heroku gem,则可能还不够。我遇到了这个问题,不得不做一个bundle update heroku。这仅取决于您的项目正在使用什么,本地 gemset 或全局 gemset。当然,您要确保您的 Gemfile 没有将 heroku gem 锁定在特定版本,否则运行更新将无济于事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 2011-12-13
      • 2014-05-21
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多