2014-04-23 182 views
0

我正在嘗試部署我的第一個Rails應用程序,但是我沒有找到所有資產(.css,.js文件和圖像)的404。我嘗試了很多方法讓事情順利進行,但沒有奏效。所有資產的路徑是這樣的:Rails - 部署後沒有找到資產

/stylesheets/application.css 

我production.rb文件:http://pastebin.com/SeVNEZD9 我application.html.erb,在那裏我有這些資產看起來是這樣:http://pastebin.com/gHkpfA8Z 感謝前進的任何幫助。

+0

其軌道您使用的版本? – Jenorish

+0

使用Rails版本4.0.4。 – gabriel

+0

你是否在'application.css'中添加了代碼?並且你在使用任何網絡服務器? – Jenorish

回答

1

config/environments/production.rb文件添加

config.assets.digest = true 

然後stylesheet_link_tag將產生指紋網址。

+0

它一直在那裏,但它不會生成指紋url。 – gabriel

0

您需要通過在終端上運行此命令來預編譯您的資產。

RAILS_ENV=production bundle exec rake assets:precompile

+0

當我回答上一個答案時,我嘗試了這個,但沒有幫助。 – gabriel

0

部署之後,你應該做的

RAILS_ENV=production bundle exec rake assets:precompile 
+0

當然我嘗試過,但沒有幫助。 – gabriel

+0

@gabriel請檢查這些行是否存在於environments/production.rb中。 http://pastie.org/9103118 – Jyothu

+0

其實,你說'config.assets.compile'應該設置爲'false',但是在我的代碼中它被設置爲'true'。哪一個是正確的? (我試圖改變它爲'假',但它並沒有幫助 – gabriel

0

因爲這是你的第一個Rails應用程序,讓我解釋一下您的問題可能是:

當你創建你的資產,他們居住在asset pipeline。這 是位於/app/assets一個文件夾,您的資產文件將 存儲

如果你想在生產中使用的資產,有兩種方法可以做到這一點 - 首先是要動態地使用資產,或者用它們是靜態的 (這是你預編譯的地方)。當您使用的Heroku的等喜歡, 你需要他們爲什麼預編譯它們爲 您使用靜態資產,這是當你部署

問題與靜態資產是Rails的creates fingerprints 他們。這些指紋基本上是給他們一個唯一的標識符 ,你必須使用動態引用<%= asset_path %>

你的問題很可能是由於您沒有正確訪問預編譯的資產所致。解決這個問題的方法是使用asset tag helpers這樣的:

#app/views/layouts/application.html.erb 
<%= stylesheet_link_tag "application" %> 
<%= javascriot_include_tag "application" %> 
+0

其實,這是我的application.html.erb文件的樣子:http://pastebin.com/gHkpfA8Z – gabriel

0

它看起來像現在正在工作。我需要重新啓動服務器才能應用更改。任何人都可以告訴我爲什麼我必須重新啓動服務器才能應用這些更改?我想在將來避免它。

我張貼我的production.rb文件對於那些誰面臨類似的問題:http://pastebin.com/7Uskvcuc

+0

如果在生產環境中工作意味着您必須重新啓動服務器,否則無論您做什麼更改都不適用,它將從cache.my中獲取答案正在工作意味着最終投票或接受我的回答。 – Jenorish