如何使”资产:预编译”不加载数据库? (路轨)

How to make “assets:precompile” NOT load the database? (Rails)

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

当我推送时,出现错误,提示它无法访问我的数据库(在预编译过程中)。那么,如何使Rails在预编译期间不连接数据库?我不知道为什么要先设置它,因为我无法想象预编译需要访问数据库的情况。

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

1
config.assets.initialize_on_precompile = false

我尝试添加此行,它行得通,但是我不知道这是否是一个好的解决方案。

这是否会使一些您可能会使用的插件可能无法在预编译过程中加载资产,从而影响最终结果?


您正在做的是正确的方法。如果您不使用模型/实际访问资产中数据库的其他任何东西,则无需使用它。唯一需要初始化应用程序的时间是,如果您正在执行以下操作:(完全人为的示例,但是您可以看到我的意思)

1
2
3
4
/* In some css file */
.some_class{
    #{User.find(1).avatar_url}
}


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

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