heroku: bash: bundle: команда не найдена

Я портирую приложение Heroku из Aspen в стек Cedar в Heroku, следуя их инструкциям.

м на последнем этапе развертывания. Я получаю эту ошибку:

    2012-10-22T11:23:53+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -p 40310 -e production`
2012-10-22T11:23:54+00:00 app[web.1]: bash: bundle: command not found

Я могу'не понимаю, как я могу отвечать за то, чтобы сообщить стеку Heroku, где находится пакет, или предоставить его, так как пакет используется им именно для этой работы. Эта команда указана в Procfile для приложения:

web: bundle exec thin start -p $PORT -e $RACK_ENV

Другой похожий вопрос о stackoverflow предполагает, что это происходит, если приложение изначально загружается в Heroku без Procfile, поэтому Heroku неправильно понимает, что это за приложение. Этот постер удалил свое приложение, создал новое и сообщил об успехе. Однако усилия по удалению и воссозданию моего перенесенного приложения высоки. Есть ли способ, как я могу это исправить, а не начать все сначала?

 Michael Mior21 апр. 2013 г., 22:58
В моем случае, указание последней версии Ruby, которая работала с моим приложением, в моем Gemfile решило проблему.

Ответы на вопрос(2)

Решение Вопроса

й ruby 1.8.7. Я'Я предполагаю, что они начали связывать в 1.8 пути вместо 1.9.1 для 1.8 приложений. Мое ранее работающее приложение перестало работать после того, как я попытался выдвинуть новую версию.

Вот'Что снова заработало:

heroku config:add PATH=bin:vendor/bundle/1.8/bin:/usr/local/bin:/usr/bin:/bin GEM_PATH=vendor/bundle/1.8

Я взял эти пути из недавно созданного приложения, используя тот же Git-репозиторий, что и раньше.

РЕДАКТИРОВАТЬ: Оказывается, что heroku опубликовал статью devcenterИзменение версии Ruby ломает путь это указывает пути для различных версий ruby.

 GreenAsJade10 нояб. 2012 г., 00:52
Дальнейшее понимание - путь теперь (возможно, в ответ на мой билет Heroku) установлен правильно, ЕСЛИ в самый первый раз, когда вы отправляете пакет с Gemfile, Gemfile имеет правильную версию ruby. Это (понятно) примет 1.9.1, если вы нет уточнить. Если это неправильно, то это правильный путь (я впервые ошибочно предположил 1.8.7, основываясь на версии 1.9.1, которую я видел!)

и я решил ее, установив правильные переменные конфигурации heroku

$ heroku config
=== xxxx Config Vars
DATABASE_URL:                  postgres://(...)
GEM_PATH:                      vendor/bundle/ruby/1.9.1
HEROKU_POSTGRESQL_CRIMSON_URL: postgres://(...)
LANG:                          en_US.UTF-8
PATH:                          bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin
PGBACKUPS_URL:                 https://(...)
RACK_ENV:                      production
RAILS_ENV:                     production

вы можете создать пустое приложение rails, перенести его в heroku и проверить переменные, которые он автоматически установил, а затем скопировать (и адаптировать) их в ваше приложение

 GreenAsJade26 окт. 2012 г., 23:52
Эй, можешь ли ты упомянуть, что именно ты должен был изменить, в частности, чтобы это работало?
 Lluís29 окт. 2012 г., 15:13
Вы должны адаптировать свою конфигурацию к ruby 1.8.7. Я думаю, что это заставило его работать, изменив PATH и GEM_PATH, попробуйте изменить 1.9.1 на 1.8.7 или проверьте значения конфигурации нового созданного приложения (с ruby 1.8.7)
 GreenAsJade26 окт. 2012 г., 23:51
Спасибо! Мой конфиг выглядит так же, как ваш. Это'немного странно, на самом деле, так как мое приложение 1.8.7, но я могуЯ не понимаю, почему это будет иметь значение для того, находится ли пакет на пути, хотя.

Ваш ответ на вопрос