web-dev-qa-db-fra.com

"bin / Rails: Aucun fichier ou répertoire de ce type" w / Ruby 2 & Rails 4 sur Heroku)

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.

57
Justin Garrick

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:

  1. Supprimer bin de ~/.gitignore
  2. Courir bundle install
  3. Validez vos modifications avec git add . et git commit -m "Add bin back"
  4. Transférez vos modifications vers Heroku avec git Push heroku master
39
Justin Garrick

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

102
JanuskaE

étapes:

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

  2. rake Rails:update:bin # Utilisez les nouveaux exécutables Rails 4

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

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

  5. git Push heroku master

  6. heroku open

9
Kirit Vaghela

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.

3
Ryan Taylor

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.

0
user2697012

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é.

0
TheSir