繁体   English   中英

如果没有Gemfile中的Heroku gem,则无法从Rake任务中调用heroku CLI

[英]Can't make calls to heroku CLI from within a Rake task without the Heroku gem in the Gemfile

我已经有一个应用程序在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。

知道如何解决这个问题吗? 我意识到这不是一个大问题,因为我可以手动运行这些额外的命令或别名,但我只是想知道为什么首先出现问题。

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现在完成没有错误,而不是崩溃与Bundler异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM