7

しばらく Heroku でアプリを実行していましたが、最近の展開で、Heroku Toolbelt を優先して Heroku gem が非推奨になったというメッセージが表示されました。ツールベルトを使用すると、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

各タスクの 2 つの heroku コマンドが問題の原因です。コマンドラインから実行すると、問題なく動作します。それが問題になるとは思えませんが、RVMでもOSXを実行しています。

これを修正する方法はありますか?これらの追加コマンドを手動で実行するか、それらにエイリアスを付けることができるので、大したことではないことはわかっていますが、そもそもなぜ問題があるのか​​ を知りたい.

4

1 に答える 1

8

gemのバージョンのherokuコマンドは、おそらくシステムよりもPATHの優先度が高くなっています。

これをテストプロジェクトで再現することができました。

を実行するwhich herokuと、シェルの選択がであることがわかります/home/justinf/.rvm/gems/ruby-1.9.3-p286/bin/heroku

必要なのはgem uninstall heroku、実行可能ファイルの削除に「はい」と答えるだけです。

which herokuこれ/usr/bin/herokuで、が表示され、test.rbは、バンドラー例外でクラッシュするのではなく、エラーなしで完了するようになりました。

于 2012-11-01T06:36:52.943 に答える