【问题标题】:Can't make calls to heroku CLI from within a Rake task without the Heroku gem in the Gemfile如果没有 Gemfile 中的 Heroku gem,则无法从 Rake 任务中调用 heroku CLI
【发布时间】:2012-10-09 14:44:44
【问题描述】:

我已经在 Heroku 上运行了一段时间的应用程序,在最近的一次部署中看到了 Heroku gem 已被弃用,取而代之 Heroku Toolbelt 的消息。使用工具带,我的所有 Heroku 命令都可以在命令行中正常工作,但在 Rake 任务中(我已为部署设置)我收到以下错误:

$ rake deploy:staging
Everything up-to-date

/Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/gems/bundler-1.2.0/lib/bundler/rubygems_integration.rb:147:in `block in replace_gem': heroku is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/heroku:18:in `<main>'
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/ruby_noexec_wrapper:14:in `eval'
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/ruby_noexec_wrapper:14:in `<main>'

/Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/gems/bundler-1.2.0/lib/bundler/rubygems_integration.rb:147:in `block in replace_gem': heroku is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/heroku:18:in `<main>'
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/ruby_noexec_wrapper:14:in `eval'
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/ruby_noexec_wrapper:14:in `<main>'

显示的错误来自此部署 rake 任务:

namespace :deploy do

  desc "deploys to Production after uploading assets to S3"
  task :production do
    puts `git push heroku master`
    puts `heroku run rake db:migrate --app myapp`
    puts `heroku restart --app myapp`
  end

  desc "deploys to Staging after uploading assets to S3"
  task :staging do
    puts `git push staging staging:master`
    puts `heroku run rake db:migrate --app myapp-staging`
    puts `heroku restart --app myapp-staging`
  end
end

每个任务中的两个heroku 命令是问题所在。如果我从命令行执行它们,它们就可以正常工作。我怀疑这很重要,但我也在用 RVM 运行 OSX。

知道如何解决这个问题吗?我意识到这并不是什么大不了的事,因为我可以手动运行这些附加命令或给它们起别名,但我只想知道为什么首先会出现问题。

【问题讨论】:

    标签: ruby-on-rails ruby heroku rubygems ruby-on-rails-3.2


    【解决方案1】:

    gem 版本的heroku 命令在您的 PATH 中可能比系统的优先级更高。

    我能够在测试项目中重现这一点。

    当我运行which heroku 时,我看到shell 的选择是/home/justinf/.rvm/gems/ruby-1.9.3-p286/bin/heroku

    只需一个简单的gem uninstall heroku,回答“是”即可删除可执行文件。

    which heroku 现在给了我/usr/bin/heroku,我的 test.rb 现在完成且没有错误,而不是因捆绑程序异常而崩溃。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      相关资源
      最近更新 更多