Question
While following the Rails 4 Beta version of Michael Hartl's [Ruby on
Rails Tutorial](http://ruby.railstutorial.org/ruby-on-rails-tutorial-
book?version=4.0#top) , my app fails to start on Heroku, but runs fine
locally with bundle exec rails server
. Checking heroku logs -t
reveals the
following 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
If I heroku run bash
and check the bin
directory, I can see that there is
not a rails
executable:
~$ ls bin
erb gem irb node rdoc ri ruby testrb
What have I done wrong? I followed the tutorial exactly.
Answer
After struggling with this for a bit, I noticed that my Rails 4 project had a
/bin
directory, unlike some older Rails 3 projects I had cloned. /bin
contains 3 files, bundle
, rails
, and rake
, but these weren't making it
to Heroku because I had bin
in my global .gitignore
file.
This is a pretty common ignore rule if you work with Git and other languages (Java, etc.), so to fix this:
- Remove
bin
from~/.gitignore
- Run
bundle install
- Commit your changes with
git add .
andgit commit -m "Add bin back"
- Push your changes to Heroku with
git push heroku master