0

在Rails 3.2.3應用程序,我遇到一個錯誤,類似於在部署到Heroku的以下內容: -重現生產環境中發生的資產管道錯誤,而不是發展?

Started GET "/" for 59.xx.xx.xx at 2012-xx-xx xx:xx:xx +0000 
Completed 500 Internal Server Error in 62ms 

ActionView::Template::Error (style.css isn't precompiled) 

如此,事實證明:樣式表是沒有得到預編譯由於某種原因(是的,我嘗試資產:預編譯)。

要解決這個問題,首先我必須在我的開發框中重現這個錯誤,所以我可能知道什麼是錯的。

因此,我的問題是:

如何我在我的機器上重現此問題?

回答

3

默認情況下,Rails僅預編譯application.jsapplication.css(以及所有非JS/CSS資產)。如果您希望它預編譯另一個文件(如果在佈局中使用javascript_include_tag等時需要執行此操作),則需要將文件添加到預編譯文件列表中。

打開config/environments/production.rb,並且應該有一個以config.assets.precompile開頭的註釋掉的行和上面的解釋。取消註釋該行並將其更改爲:

config.assets.precompile += %w(stylesheets/style.css) 

(使用路徑的style.css如果這不是正確的目錄)。

要在開發中重現這一點,您必須修改development.rb以擁有與production.rb完全相同的資源設置。

[編輯]

正如您看到的,你可以在命令行另一個環境啓動內置的Rails的服務器 - 但是,這一切的影響(類重裝,數據庫連接,電子郵件設置,等等)以及資產管道設置,所以它有時最多可能是欺騙(意想不到的副作用),最壞的情況是危險的(意外地向用戶發送電子郵件)。不是它沒有用,只是要小心。 ;)

0

我可以簡單的通過指定的環境我的本地開發機器上運行的生產環境,同時啓動服務器

$ RAILS_ENV=production rails s 
=> Booting Thin 
=> Rails 3.2.3 application starting in production on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 

,並能夠重現該問題。不知道它是如此微不足道的開發&生產環境在軌道上

+2

'軌道s -e生產'會做同樣的 – 2012-04-21 16:28:54