【问题标题】:Precompiling assets with Rails_Env set as production将 Rails_Env 设置为生产环境的预编译资产
【发布时间】:2015-04-16 09:15:46
【问题描述】:

我正在尝试运行 $ rake assets:precompile RAILS_ENV=production 以:1) 缩小我的资产(遵循此答案:How do I minify CSS in Rails 4?)和 2) 在我的 JS 中使用生产级变量(即,我的 JS 有 ENV['variable']当我运行常规的rake assets:precompile 然后推送到 Heroku 时,代码会使用 ENV['variable'] 的开发版本而不是生产版本运行。

但是,我遇到了一个错误:

rake aborted!
Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded. Add gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).

错误是响应我正在编译的 JS 文件中的这一行:

var items_to_be_added = [{
  id: '<%= ItemName.where(name:"Jacket").first.id %>',
  name: "Jacket",
  number: 1
}

但奇怪的是我运行了heroku run gem list 并且已经安装了pg 0.15.1

非常感谢任何帮助!

【问题讨论】:

  • 你的 database.yml 文件是什么样的?
  • @evanbikes 很有趣,我正在使用 SQLite,它看起来像......但我尝试删除它,仍然有同样的问题

标签: sql ruby-on-rails ruby-on-rails-4 heroku asset-pipeline


【解决方案1】:

你必须在你的 database.yml 中指定 Heroku 的 postgres 数据库。

首先,在命令行上:heroku config

它应该吐出DATABASE_URL: postgres://&lt;username&gt;:&lt;password&gt;@&lt;host&gt;/&lt;database&gt;

将这些值放入您的 database.yml 文件中,以便您的本地环境知道如何连接到 Heroku 的数据库。

然后,资产预编译应该能够查询生产数据库并编译资产。

显然,不要将此检查到版本控制中。

【讨论】:

  • 好的,现在我得到:Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded. Add gem 'pg'` 到您的 Gemfile(并确保其版本是 ActiveRecord 要求的最低版本)。` 但我刚刚做了一个 heroku run gem list 和可以确认我安装了pg (0.15.1)
  • 您的捆绑包已捆绑在 Heroku 中用于生产,但您的本地 rake 任务正在使用本地 gem。我只是将 pg gem 以及预编译所需的任何 gem 移出生产组,以便它们在本地捆绑。或者你可以做RAILS_ENV=production bundle
  • 谢谢。 [一百万个其他错误之后,它正在工作]
猜你喜欢
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 2012-04-02
  • 1970-01-01
相关资源
最近更新 更多