2013-07-11 2 views
54

Während im Anschluss an die Rails 4 Beta Version von Michael Hartl des Ruby on Rails Tutorial, meine App nicht auf Heroku starten, aber läuft gut lokal mit bundle exec rails server. Überprüfen heroku logs -t ergibt folgende Fehler:"ist/Schienen: Keine solche Datei oder das Verzeichnis" w/Ruby-2 & Rails 4 auf Heroku

$ heroku[web.1]: State changed from crashed to starting 
$ heroku[web.1]: Starting process with command `bin/rails server 
-p 33847 -e $RAILS_ENV` 
$ app[web.1]: bash: bin/rails: No such file or directory 
$ heroku[web.1]: Process exited with status 127 
$ heroku[web.1]: State changed from starting to crashed 
$ heroku[web.1]: Error R99 (Platform error) -> Failed to launch the 
dyno within 10 seconds 
$ heroku[web.1]: Stopping process with SIGKILL 

Wenn ich heroku run bash und überprüfen Sie die bin Verzeichnis, kann ich sehen, dass es nicht eine rails ausführbar ist:

~$ ls bin 
erb gem irb node rdoc ri ruby testrb 

Was habe ich falsch gemacht? Ich habe das Tutorial genau verfolgt.

Antwort

38

Nachdem ich ein wenig damit zu kämpfen hatte, bemerkte ich, dass mein Rails 4 Projekt ein /bin Verzeichnis hatte, im Gegensatz zu einigen älteren Rails 3 Projekten, die ich geklont hatte. /bin enthält 3 Dateien, bundle, rails und rake, aber diese haben es nicht zu Heroku geschafft, weil ich bin in meiner globalen .gitignore Datei hatte.

Dies ist ein ziemlich häufig ignoriert Regel, wenn Sie mit Git und anderen Sprachen arbeiten (Java, etc.), so fixieren diese:

  1. entfernen bin von ~/.gitignore
  2. Run bundle install
  3. Commit Ihre Änderungen mit git add . und git commit -m "Add bin back"
  4. mit Ihren Änderungen zu Heroku Drücken git push heroku master
+3

Es gibt einen Heroku Leitfaden für Rails4 Anwendungen auf Heroku läuft - https://devcenter.heroku.com/articles/rails4 –

+1

Ja, es Nennungen nicht ist, die in Ihrem. Gitignore, aber das Tutorial nicht. Ich dachte, ich würde das schaffen, falls jemand anders ein ähnliches Problem hat. –

+0

@justingarrick musst du 'bundle install' wirklich ausführen? Scheint wie ein zusätzlicher Schritt. – Josh

101

Ich hatte dieses Problem auch, da ich 4.0.0

Führen Sie diesen Befehl

rake rails:update:bin 

Sie hier für weitere Informationen https://devcenter.heroku.com/articles/rails4

+2

Gute Informationen für diejenigen, die ein Upgrade von Rails 3 usw. durchführen, aber das Problem in der Frage trat in einer neuen Anwendung auf. Auch das wird dir nicht helfen, wenn du diese Verzeichnisse gittigored hast, weil sie immer noch nicht an Heroku weitergeleitet werden. –

+2

Umzug nach Rails 4.0.0, das war definitiv das Problem. –

+0

Die Ausgabe dieses Befehls hat mir geholfen, meine heroku-App wieder zum Laufen zu bringen. Danke vielmals. – Francisco

0

Wir haben nicht ein gehen auf Schienen aufgerüstet myapp/bin-Verzeichnis in unserer Rails 4-App, also haben wir eine erstellt und dann in meine app/script/rails-Datei kopiert, plus die Bundle- und Rake-Dateien von unter rvm/ruby ​​/ bin und diese dann zum Repo für git und hinzugefügt schob es zu Heroku und alles war gut.

3

Ich hatte dieses Problem, weil die Berechtigungen auf meinem ~/bin-Verzeichnis 644 statt 755 waren. Running rake rails:update:bin lokal (auf Mac/* nix) und dann drücken Sie die Änderungen behoben das Problem.

-1

Ich kann bestätigen, läuft rake rails:update:bin funktioniert, wie von @Ryan Taylor gesagt.

Ich glaube, ich hatte dieses Problem, weil ich ursprünglich diese Rails App unter Windows erstellt habe. Der obige Befehl unter Linux löste sich für mich.

Auch beim Wechsel von Windows zu Linux für die Entwicklung ist es eine gute Idee, Gemfile.lock Datei zu löschen und bundle install zu laufen, um es wieder zu generieren, ohne Windows-spezifische Edelsteine ​​dort aufgeführt.

-1

Ich hatte das gleiche Problem, das Sie getan haben. Das Problem lag darin, dass der bin-Ordner nie in das heroku-Repository verschoben wurde.

ich sah, ich sah, und dann wieder ich sah, gibt es keine Regel für die bin/Ordner ...

in der .gitignore Datei war dann nach viel Schmerz und Angst, erkannte ich, dass ein paar Monate zuvor hatte ich ein globales .gitignore erstellt, das alle bin-Ordner aller meiner Repositories ignorieren würde (warum Herr, warum ??).

Ich löschte die globale .gitignore, und alles hat gut funktioniert.

9

Schritte:

  1. bundle config --delete bin # Turn off Bundler's stub generator

  2. rake rails:update:bin # Use the new Rails 4 executables

  3. git add bin or git add bin -f # Add bin/ to source control

  4. git commit -a -m "you commit message"

  5. git push heroku master

  6. heroku open

Verwandte Themen