簡體   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