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:
- Eliminar
bin
de~/.gitignore
- Ejecutar la
bundle install
- Confirme sus cambios con
git add .
ygit commit -m "Add bin back"
- 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í.
También tuve este problema desde que actualicé a Rails 4.0.0
Ejecuta este comando
rake rails:update:bin
Puede ir aquí para obtener más información https://devcenter.heroku.com/articles/rails4
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 :
bundle config --delete bin
# Desactivar el generador de stub de Bundler
rake rails:update:bin
# Usa los nuevos ejecutables de Rails 4
git add bin or git add bin -f
# Agregar bin / al control de fuente
git commit -a -m "you commit message"
git push heroku master
heroku open