While following the Rails 4 Beta version of Michael Hartl's Ruby on Rails Tutorial, 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.
I had this problem also since I upgraded to rails 4.0.0
Run this command
rake rails:update:bin
You can go here for more info https://devcenter.heroku.com/articles/rails4
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:
bin
from ~/.gitignore
bundle install
git add .
and git commit -m "Add bin back"
git push heroku master
Steps :
bundle config --delete bin
# Turn off Bundler's stub generator
rake rails:update:bin
# Use the new Rails 4 executables
git add bin or git add bin -f
# Add bin/ to source control
git commit -a -m "you commit message"
git push heroku master
heroku open
I had this issue because the permissions on my ~/bin
directory were 644
instead of 755
. Running rake rails:update:bin
locally (on Mac/*nix) and then pushing the changes fixed the problem.
I had the very same problem that you did. The issue lied in the fact that the bin folder was never pushed to the heroku repository.
I looked, I looked, and then I looked again, there was no rule in the .gitignore file for the bin/ folder...
Then, after a lot of pain and anguish, I realized that a couple of months before I had created a global .gitignore that would ignore all bin folders of all my repositories (why lord, why??).
I deleted the global .gitignore, and everything worked fine.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With