4

我正在 Heroku (Cedar) 上部署我的 Rails 应用程序,我可以选择 3 个关于预编译我的资产的选项,我选择了 Heroku 在部署时预编译我的资产的选项。

当我推送时,我收到一个错误,它无法访问我的数据库(在预编译期间)。那么,如何让Rails在预编译时不连接数据库呢?我不知道为什么要设置它,因为我无法想象预编译需要访问数据库的场景。

我在某处看到了在预编译时禁用初始化应用程序的解决方案,这是通过将以下内容添加到 application.rb 来实现的(在 environment/production.rb 中设置它不起作用):

config.assets.initialize_on_precompile = false

我尝试添加这一行,它可以工作,但我不知道这是否是一个好的解决方案。这不会使您可能使用的一些插件在预编译期间无法加载资产,从而影响最终结果吗?

4

2 回答 2

1

你正在做的是正确的方法。如果您不使用模型/其他任何实际访问资产中数据库的东西,那么您就不需要它。你唯一需要初始化你的应用程序的时候是如果你在做这样的事情:(完全人为的例子,但你可以看到我在做什么)

/* In some css file */
.some_class{
    #{User.find(1).avatar_url}
}
于 2012-11-13T03:52:21.150 回答
0

如果您启用 Heroku Labs (http://devcenter.heroku.com/articles/labs-user-env-compile),您可以在部署时访问您的 Db,效果很好。

你用设计吗?这通常是偶然对预编译资产进行数据库访问的罪魁祸首。

于 2012-02-05T21:40:17.197 回答