У меня есть структура каталогов, подобная следующей:
my-app/
.git/
db/ <-- Database stuff
lib/ <-- Business logic
spec/
web/ <-- Rails
Rails находится в подкаталоге web/
репозитория. Heroku не нравится это по умолчанию.
У меня есть частично работающий пакет сборки heroku. В основном он вызывает Dir.chdir
для изменения переменной среды APP_SUBDIR
(если она существует) перед запуском каких-либо задач.
Я хотел бы выполнить развертывание в Heroku, но не могу заставить работать конвейер ресурсов. Когда приходит время для предварительной компиляции ресурсов, настроенный пакет сборки переходит в каталог web/
и пытается запустить задачу.
Однако я получаю эту ошибку со следующим важным битом:
Could not detect rake tasks
ensure you can run `$ bundle exec rake -P` against your app with no environment variables present
and using the production group of your Gemfile.
Your Ruby version is 1.9.2, but your Gemfile specified 2.0.0 (Bundler::RubyVersionMismatch)
Что странно, так как Heroku ясно говорит, что я запускаю 2.0 в том же самом пироге. На самом деле, когда я запускаю:
$ heroku run 'cd web; bundle exec rake -P'
это работает просто отлично.
TL;DR (краткое описание)
Heroku считает мою рубиновую версию 1.9.2
, хотя на самом деле это 2.0.0
показан в собственном процессе сборки. Почему это может быть?