Tout en suivant la version Rails 4 Beta de Michael Hartl Ruby on Rails Tutorial, mon application ne démarre pas sur Heroku, mais fonctionne bien localement avec bundle exec Rails server
. Vérification 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 répertoire bin
, je peux voir qu'il y a pas un exécutable Rails
:
~$ ls bin
erb gem irb node rdoc ri Ruby testrb
Qu'est ce que j'ai mal fait? J'ai suivi le tutoriel exactement.
Après avoir lutté un peu avec cela, j'ai remarqué que mon projet Rails 4 avait un /bin
répertoire, contrairement à certains anciens Rails 3 projets que j'avais clonés. /bin
contient 3 fichiers, bundle
, Rails
et rake
, mais ceux-ci ne se rendaient pas à Heroku car j'avais bin
dans mon global .gitignore
fichier.
C'est une règle d'ignorance assez courante si vous travaillez avec Git et d'autres langages (Java, etc.), donc pour résoudre ce problème:
bin
de ~/.gitignore
bundle install
git add .
et git commit -m "Add bin back"
git Push heroku master
J'ai également rencontré ce problème depuis la mise à niveau 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
étapes:
bundle config --delete bin
# Désactiver le générateur de stub de Bundler
rake Rails:update:bin
# Utilisez les nouveaux exécutables Rails 4
git add bin or git add bin -f
# Ajouter bin/au contrôle de code source
git commit -a -m "you commit message"
git Push heroku master
heroku open
J'ai eu ce problème car les autorisations sur mon ~/bin
le répertoire était 644
au lieu de 755
. Fonctionnement rake Rails:update:bin
localement (sur Mac/* nix), puis en poussant les modifications ont résolu le problème.
Nous n'avions pas de répertoire myapp/bin dans notre application Rails 4, nous en avons donc créé un, puis copié dans le fichier my app/script/Rails, ainsi que les fichiers bundle et rake de sous rvm/Ruby/bin, puis ajouté ceux-ci au dépôt pour git et l'a poussé jusqu'à heroku et tout allait bien.
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 référentiel heroku.
J'ai regardé, j'ai regardé, puis j'ai regardé à nouveau, il n'y avait pas de règle dans le fichier .gitignore pour le bac/dossier ...
Puis, après beaucoup de douleur et d'angoisse, j'ai réalisé que quelques mois avant j'avais créé un .gitignore global qui ignorerait tous les dossiers bin de tous mes référentiels (pourquoi seigneur, pourquoi ??).
J'ai supprimé le .gitignore global, et tout a bien fonctionné.