ruby-on-rails ruby heroku ruby-on-rails-4 ruby-2.0

ruby on rails - "Bin/rails: No existe ningún archivo o directorio" con Ruby 2 & Rails 4 en Heroku



ruby-on-rails ruby-on-rails-4 (7)

Mientras sigo la versión de Rails 4 Beta del Tutorial Ruby on Rails de Michael Hartl, mi aplicación no puede iniciarse en Heroku, pero funciona bien localmente con el bundle exec rails server . La comprobación de los heroku logs -t revela el siguiente error:

$ 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 heroku run bash y heroku run bash el directorio bin , puedo ver que no hay un ejecutable de rails :

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

¿Qué he hecho mal? Seguí el tutorial exactamente.


Después de luchar con esto por un tiempo, noté que mi proyecto Rails 4 tenía un directorio /bin , a diferencia de algunos proyectos anteriores de Rails 3 que había clonado. /bin contiene 3 archivos, bundle , rails y rake , pero Heroku no lo hizo porque tenía bin en mi archivo global .gitignore .

Esta es una regla de ignorar bastante común si trabajas con Git y otros lenguajes (Java, etc.), así que para solucionar esto:

  1. Eliminar bin de ~/.gitignore
  2. Ejecutar la bundle install
  3. Confirme sus cambios con git add . y git commit -m "Add bin back"
  4. Presiona tus cambios a Heroku con git push heroku master

No teníamos un directorio myapp / bin en nuestra aplicación rails 4, así que creamos uno y luego lo copiamos en el archivo de mi aplicación / script / rails, más los paquetes y rake de debajo de rvm / ruby ​​/ bin y luego agregué estos al repositorio de git y lo empujó a heroku y todo estaba bien.


Puedo confirmar la ejecución de rake rails:update:bin works, como dijo @Ryan Taylor.

Creo que tuve este problema porque originalmente creé esta aplicación de Rails en Windows. Ejecutando el comando de arriba en Linux resuelto para mí.

Además, al cambiar de Windows a Linux para el desarrollo, es una buena idea eliminar el archivo Gemfile.lock y ejecutar el bundle install para generarlo de nuevo sin las gemas específicas de Windows enumeradas allí.



Tuve el mismo problema que tú. El problema radicaba en el hecho de que la carpeta bin nunca se envió al repositorio heroku.

Miré, miré, y luego volví a mirar, no había ninguna regla en el archivo .gitignore para el bin / carpeta ...

Luego, después de mucho dolor y angustia, me di cuenta de que un par de meses antes había creado un .gitignore global que ignoraría todas las carpetas bin de todos mis repositorios (¿por qué señor, por qué?).

Eliminé el .gitignore global, y todo funcionó bien.


Tuve este problema porque los permisos en mi directorio ~/bin eran 644 lugar de 755 . Ejecutando rake rails:update:bin localmente (en Mac / * nix) y luego presionando los cambios se corrigió el problema.


Pasos :

  1. bundle config --delete bin # Desactivar el generador de stub de Bundler

  2. rake rails:update:bin # Usa los nuevos ejecutables de Rails 4

  3. git add bin or git add bin -f # Agregar bin / al control de fuente

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

  5. git push heroku master

  6. heroku open