Развертывание Rails 4.1 в подкаталоге Heroku?

У меня есть структура каталогов, подобная следующей:

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 показан в собственном процессе сборки. Почему это может быть?


person soundly_typed    schedule 12.05.2014    source источник
comment
возможный дубликат Не удалось обнаружить задачи rake   -  person Brad Werth    schedule 12.05.2014
comment
Собирался порекомендовать сменить пакет сборки, но, похоже, вы это сделали!   -  person Richard Peck    schedule 12.05.2014


Ответы (1)


Вы можете отправить только подкаталог, в котором находится приложение Rails, в Heroku:

git subtree push --prefix web heroku master

Где web это подкаталог.

person Alex Lang    schedule 18.05.2015