59 votes

"bin/rails : No such file or directory" avec Ruby 2 & Rails 4 sur Heroku

Tout en suivant le programme Rails 4 Bêta version de Michael Hartl Tutoriel Ruby on Rails mon application ne démarre pas sur Heroku, mais fonctionne bien localement avec bundle exec rails server . Vérification de heroku logs -t révèle l'erreur suivante :

$ 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

Si je heroku run bash et vérifiez le bin je peux voir qu'il y a no a rails exécutable :

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

Qu'est-ce que j'ai fait de mal ? J'ai suivi le tutoriel à la lettre.

105voto

JanuskaE Points 745

J'ai aussi ce problème depuis que j'ai mis à jour vers rails 4.0.0.

Exécutez cette commande

rake rails:update:bin

Vous pouvez aller ici pour plus d'informations https://devcenter.heroku.com/articles/rails4

2 votes

C'est une bonne information pour ceux qui font une mise à jour depuis Rails 3, etc., mais le problème dans la question s'est produit dans une nouvelle application. En outre, cela ne vous aidera pas si vous avez ces répertoires gitignorés, car ils ne seront toujours pas git poussés vers Heroku.

2 votes

En passant à Rails 4.0.0, c'était définitivement le problème.

0 votes

L'exécution de cette commande m'a aidé à faire fonctionner mon application Heroku à nouveau. Merci beaucoup.

40voto

justingarrick Points 4555

Après avoir lutté un peu avec cela, j'ai remarqué que mon projet Rails 4 avait une /bin contrairement à d'anciens projets Rails 3 que j'avais clonés. /bin contient 3 fichiers, bundle , rails y rake mais elles n'arrivaient pas jusqu'à Heroku parce que j'avais bin dans mon monde .gitignore fichier.

C'est une règle d'ignorance assez courante si vous travaillez avec Git et d'autres langages (Java, etc.), donc pour corriger cela :

  1. Retirer bin de ~/.gitignore
  2. Exécuter bundle install
  3. Engagez vos changements avec git add . y git commit -m "Add bin back"
  4. Poussez vos changements vers Heroku avec git push heroku master

3 votes

Il existe un guide Heroku sur l'exécution d'applications Rails4 sur Heroku. devcenter.heroku.com/articles/rails4

1 votes

Oui, il est mentionné que vous n'avez pas de bin dans votre .gitignore, mais le tutoriel ne le mentionne pas. J'ai juste pensé que je créerais ceci au cas où quelqu'un d'autre aurait un problème similaire.

0 votes

@justingarrick avez vous vraiment besoin de courir bundle install ? Ça semble être une étape supplémentaire.

9voto

Kirit Vaghela Points 3653

Étapes :

  1. bundle config --delete bin # Désactiver le générateur de stub de Bundler

  2. rake rails:update:bin # Utiliser les nouveaux exécutables de Rails 4

  3. git add bin or git add bin -f # Ajouter bin/ au contrôle de source

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

  5. git push heroku master

  6. heroku open

3voto

Ryan Taylor Points 450

J'ai eu ce problème parce que les permissions sur mon ~/bin répertoire étaient 644 au lieu de 755 . Exécuter rake rails:update:bin localement (sur Mac/*nix), puis en poussant les changements, a résolu le problème.

1voto

SirParn Points 21

J'ai eu le même problème que vous. Le problème réside dans le fait que le dossier bin n'a jamais été poussé vers le dépôt heroku.

J'ai regardé, j'ai regardé, puis j'ai regardé à nouveau, il n'y avait aucune règle dans le fichier .gitignore pour le dossier bin/...

Puis, après beaucoup de douleur et d'angoisse, j'ai réalisé que quelques mois auparavant, j'avais créé un .gitignore global qui ignorait tous les dossiers bin de tous mes dépôts (pourquoi lord, pourquoi ? ?).

J'ai supprimé le .gitignore global, et tout a fonctionné correctement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X