2012-10-19 1 views
7

Ich habe schon eine Weile eine App auf Heroku laufen lassen und bei einer kürzlichen Deployment wurde die Nachricht angezeigt, dass das Heroku-Juwel veraltet war zugunsten des Heroku Toolbelt. Mit dem toolbelt, alle meine Heroku Befehle funktionieren von der Kommandozeile, sondern innerhalb einer Rake-Task (die ich Setup für Einsätze) bekomme ich folgende Fehler:Aufrufe von heroku CLI können nicht innerhalb einer Rake-Aufgabe ohne das Heroku-Juwel im Gemfile erfolgen.

$ rake deploy:staging 
Everything up-to-date 

/Users/aramisbear/.rvm/gems/[email protected]/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/[email protected]/bin/heroku:18:in `<main>' 
from /Users/aramisbear/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `eval' 
from /Users/aramisbear/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `<main>' 

/Users/aramisbear/.rvm/gems/[email protected]/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/[email protected]/bin/heroku:18:in `<main>' 
from /Users/aramisbear/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `eval' 
from /Users/aramisbear/.rvm/gems/[email protected]pp/bin/ruby_noexec_wrapper:14:in `<main>' 

Die Fehler aus diesem Einsatzrechen sind gezeigt werden Aufgabe:

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 

die beiden Heroku in jedem Task-Befehle sind, wo das Problem herkommt. Wenn ich sie von der Befehlszeile aus ausführen, funktionieren sie jedoch gut. Ich bezweifle, dass es wichtig ist, aber ich betreibe auch OSX mit RVM.

Irgendeine Idee, wie man das repariert? Mir ist klar, dass es keine große Sache ist, da ich den zusätzlichen Befehl manuell ausführen oder als Alias ​​verwenden kann, aber ich möchte nur wissen, warum es überhaupt ein Problem gibt.

Antwort

8

Die Version des Gems heroku hat wahrscheinlich eine höhere Priorität in Ihrem PATH als die des Systems.

Ich konnte dies in einem Testprojekt reproduzieren.

Wenn ich which heroku ausführen, sehe ich, dass die Shell-Auswahl /home/justinf/.rvm/gems/ruby-1.9.3-p286/bin/heroku ist.

Alles, was es braucht, ist eine einfache gem uninstall heroku, die ja beantwortet, um die ausführbare Datei zu löschen.

which heroku gibt mir jetzt /usr/bin/heroku, und mein test.rb wird jetzt mit keinem Fehler abgeschlossen, anstatt mit einer Bundler-Ausnahme auszufallen.

+0

Das war es. Vielen Dank! – brightball