"bin/rails: нет такого файла или каталога" с Ruby 2 & Rails 4 на Heroku
Во время выполнения Rails 4 Бета версии Michael Hartl Учебник Ruby on Rails, мое приложение не запускается Heroku, но отлично работает локально с bundle exec rails server
. При проверке heroku logs -t
отображается следующая ошибка:
$ 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
Если я heroku run bash
и проверьте каталог bin
, я вижу, что существует не a rails
исполняемый файл:
~$ ls bin
erb gem irb node rdoc ri ruby testrb
Чем я ошибся? Я точно следил за учебником.
Ответы
Ответ 1
После битвы с этим немного, я заметил, что у моего проекта Rails 4 был каталог /bin
, в отличие от некоторых старых проектов Rails 3, которые я клонировал. /bin
содержит 3 файла, bundle
, rails
и rake
, но они не попадали в Heroku, потому что у меня был bin
в моем глобальном файле .gitignore
.
Это довольно распространенное правило игнорирования, если вы работаете с Git и другими языками (Java и т.д.), поэтому исправить это:
- Удалите
bin
из ~/.gitignore
- Выполнить
bundle install
- Зафиксируйте свой
изменяется с помощью
git add .
и git commit -m "Add bin back"
- Нажмите на свои изменения в Heroku с помощью
git push heroku master
Ответ 2
У меня была эта проблема, так как я обновился до rails 4.0.0
Запустите эту команду
rake rails:update:bin
Вы можете перейти сюда для получения дополнительной информации
https://devcenter.heroku.com/articles/rails4
Ответ 3
Шаги:
-
bundle config --delete bin
# Отключить генератор-заглушку Bundler
-
rake rails:update:bin
# Используйте новые исполняемые файлы Rails 4
-
git add bin or git add bin -f
# Добавить элемент управления bin/to source
-
git commit -a -m "you commit message"
-
git push heroku master
-
heroku open
Ответ 4
У меня была эта проблема, потому что разрешения в моем каталоге ~/bin
были 644
вместо 755
. Запуск rake rails:update:bin
локально (на Mac/* nix), а затем нажатие изменений устранило проблему.
Ответ 5
У нас не было каталога myapp/bin в нашем приложении rails 4, поэтому мы создали его, а затем скопировали в файл моего приложения / script/rails, а также пакет и файлы рейка из-под rvm/ruby /bin, а затем добавили их в репо для git и подтолкнули его к героку, и все было хорошо.
Ответ 6
Я могу подтвердить, что работает rake rails:update:bin
работает, как сказал @Ryan Taylor.
Я думаю, что у меня была эта проблема, потому что я изначально создал это приложение Rails в Windows. Выполнение приведенной выше команды для Linux было решено для меня.
Кроме того, при переходе с Windows на Linux для разработки рекомендуется удалить файл Gemfile.lock
и запустить bundle install
, чтобы сгенерировать его снова, не указав в нем конкретные шрифты Windows.
Ответ 7
У меня была та же самая проблема, что и вы. Проблема заключалась в том, что папка bin никогда не была перенесена в репозиторий heroku.
Я посмотрел, я посмотрел, а затем снова посмотрел, не было правила в файле .gitignore для bin/folder...
Затем, после большой боли и муки, я понял, что за пару месяцев до того, как я создал глобальный .gitignore, который будет игнорировать все папки bin всех моих репозиториев (почему лорд, почему?).
Я удалил глобальный .gitignore, и все работало нормально.