簡體   English   中英

如何使“資產:預編譯”不加載數據庫? (導軌)

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

我正在Heroku(Cedar)上部署我的Rails應用程序,有3個選項可以預編譯我可以選擇的資產,我選擇了Heroku在部署時預編譯資產的選項。

當我推送時,我收到一個錯誤,它無法訪問我的數據庫(在預編譯期間)。 那么,如何在預編譯期間使Rails不連接到數據庫? 我不知道為什么它首先設置,因為我無法想象預編譯需要訪問數據庫的場景。

我在某處找到了一個禁用在預編譯時初始化應用程序的解決方案,這是通過將以下內容添加到application.rb(在環境/ production.rb中設置它不起作用)來實現的:

config.assets.initialize_on_precompile = false

我嘗試添加這一行,它可以工作,但我不知道它是否是一個很好的解決方案。 這會不會產生一些插件,您可能會在預編譯期間使用這些插件來加載資產,從而影響最終結果?

你正在做的是正確的方法。 如果您不使用模型/其他任何實際訪問資產中數據庫的內容,那么您就不需要它。 你需要初始化你的應用程序的唯一一次是你做這樣的事情:(完全做作的例子,但你可以看到我得到的東西)

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

如果啟用Heroku Labs(http://devcenter.heroku.com/articles/labs-user-env-compile),您可以在部署時訪問您的Db,這非常有用。

你用Devise嗎? 這通常是偶然對預編譯資產進行數據庫訪問的罪魁禍首。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM