2013-09-01 102 views
5

首先,我做了很多使用Google進行搜索的工作,甚至可以在Heroku上運行,但似乎無論我是否讓heroku在slug編譯期間預編譯我的資產,還是預編譯他們自己並提交,無論哪種方式,我的Rails應用程序4的application.css總是空:Heroku資產文件始終爲空

$ curl -i http://www.boxscoregeeks.com/assets/application-c712146df692b0fca6c21c0bf1dddcd5.css 
HTTP/1.1 200 OK 
Content-Type: text/css 
Date: Sun, 01 Sep 2013 00:50:10 GMT 
Last-Modified: Sun, 01 Sep 2013 00:46:54 GMT 
Status: 200 OK 
X-Sendfile: /app/public/assets/application-c712146df692b0fca6c21c0bf1dddcd5.css 
Content-Length: 0 
Connection: keep-alive 

要進行驗證,這是本地罰款:

$ curl -I http://localhost:3001/assets/application-c712146df692b0fca6c21c0bf1dddcd5.css 
HTTP/1.1 200 OK 
Last-Modified: Sat, 31 Aug 2013 03:46:55 GMT 
Content-Type: text/css 
Content-Length: 106237 
Connection: keep-alive 
Server: thin 1.5.1 codename Straight Razor 

我的清單:

  • 我在我的production.rb文件中有config.serve_static_assets = true
  • 我有gem 'rails_12factor', group: :production在我的Gemfile
  • 我這樣做:heroku labs:enable user-env-compile --app=YOUR_APP。在我運行之前,儘管執行了步驟1和2,資源:預編譯將不會運行。它始終嘗試初始化生產數據庫。

幾乎所有的Google使用告訴我要做以上這些事情,但在這裏我仍然有一個空的applicaiton.css文件。任何幫助都會很棒。

謝謝!

+0

也在'production.rb'中,確保啓用'config.assets.precompile + =%w(search.js)'。不要使用'config.assets.precompile = ['* .js','* .css']',因爲其他線程可能會提示。 – ahnbizcad

+0

一旦你這樣做了,還要確保運行'RAILS_ENV = production rake assets:precompile'。然後提交併推送。 – ahnbizcad

回答

6

我發現了我自己對這個問題的答案。

有問題的應用程序是我從rails 3升級的應用程序。所以我構建並部署了一個空的新rails 4應用程序(並且這工作正常)。通過版本比較的production.rb文件,我注意到,非工作應用程序有它這樣一行:

# Specifies the header that your server uses for sending files 
# (comment out if your front-end server doesn't support this) 
config.action_dispatch.x_sendfile_header = "X-Sendfile" # Use 'X-Accel-Redirect' for nginx 

這個配置線在新的軌道註釋掉4應用程序。和Heroku的文檔建議是:

config.action_dispatch.x_sendfile_header = nil # For Heroku 

當我改變了這一點,一切都按預期。當應用程序在rails 3上運行Cedar時,這似乎並不重要。

+0

謝謝,剛剛有同樣的問題,並修復:) – spilliton

+0

哦,我不知道這是多麼可怕。修復了我的瘋狂問題! – tvalent2

+0

您已爲世界做出了卓越的服務,先生PatrickEm。 *引腳網絡獎章* – ahnbizcad