6

我有一个如下目录结构:

my-app/
  .git/
  db/    <-- Database stuff
  lib/   <-- Business logic
  spec/
  web/   <-- Rails

Rails 位于web/存储库的子目录中。Heroku 默认不喜欢这个。

我有一个部分工作的 heroku buildpack。它基本上调用在运行任何任务之前Dir.chdir更改为APP_SUBDIR环境变量(如果存在)。

我想部署到 Heroku,但我无法让资产管道任务工作。当需要预编译资产时,定制的 buildpack 会更改到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 认为我的 ruby​​ 版本是在它自己的构建过程中1.9.2真正显示出来的。为什么会这样?2.0.0

4

1 回答 1

-1

您只能将 Rails 应用程序所在的子目录推送到 Heroku:

git subtree push --prefix web heroku master

web子目录在哪里。

于 2015-05-18T16:42:03.527 回答