2013-12-09 129 views
0

我有一個堆棧Rails的獨角獸運行的Heroku,我服務於資產靜態所以外線呼叫我可以配置Cloudfront的Rails +獨角獸+的Heroku +資產管道資產未提供給從網站

的Cloudfront試圖要求一些資產麒麟引發錯誤,我查了一下麒麟的源代碼,顯然bodynil值的到來,最有趣的部分是,當資產從站點內的要求,在瀏覽器中,它們服務得很好。我也運行了curl mypage.com/assets/some_asset.css,它在Rails的日誌中引發了完全相同的錯誤。以下是Rails日誌中顯示的錯誤以及我從機器運行卷曲時得到的錯誤。

2013-12-09T15:43:25.758765+00:00 app[web.1]: E, [2013-12-09T15:43:25.758676 #15] ERROR -- : app error: undefined method `each' for nil:NilClass (NoMethodError) 
2013-12-09T15:43:25.758842+00:00 app[web.1]: E, [2013-12-09T15:43:25.758775 #15] ERROR -- : /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/lib/unicorn/http_response.rb:60:in `http_response_write' 
2013-12-09T15:43:25.758892+00:00 app[web.1]: E, [2013-12-09T15:43:25.758811 #15] ERROR -- : /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/lib/unicorn/http_server.rb:590:in `process_client' 
2013-12-09T15:43:25.758936+00:00 app[web.1]: E, [2013-12-09T15:43:25.758868 #15] ERROR -- : /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/lib/unicorn/http_server.rb:660:in `worker_loop' 
2013-12-09T15:43:25.759023+00:00 app[web.1]: E, [2013-12-09T15:43:25.758945 #15] ERROR -- : /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/lib/unicorn/http_server.rb:527:in `spawn_missing_workers' 
2013-12-09T15:43:25.759023+00:00 app[web.1]: E, [2013-12-09T15:43:25.758991 #15] ERROR -- : /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/lib/unicorn/http_server.rb:153:in `start' 
2013-12-09T15:43:25.759023+00:00 app[web.1]: E, [2013-12-09T15:43:25.759016 #15] ERROR -- : /app/vendor/bundle/ruby/2.0.0/gems/unicorn-4.7.0/bin/unicorn:126:in `<top (required)>' 
2013-12-09T15:43:25.759089+00:00 app[web.1]: E, [2013-12-09T15:43:25.759041 #15] ERROR -- : /app/vendor/bundle/ruby/2.0.0/bin/unicorn:23:in `load' 
2013-12-09T15:43:25.759089+00:00 app[web.1]: E, [2013-12-09T15:43:25.759066 #15] ERROR -- : /app/vendor/bundle/ruby/2.0.0/bin/unicorn:23:in `<main>' 

錯誤,我從捲曲了:

HTTP/1.1 500 Internal Server Error 
curl: (18) transfer closed with 4283 bytes remaining to read 

這可能是因爲麒麟的配置被設置爲30秒,但錯誤發生非常快,甚至沒有一個完整的第二遍。

編輯I:因爲我正在使用Heroku,並且我的應用程序有很多資產在Heroku超時之前無法編譯所有這些資源,所以我在本地編譯資源並將它們推送到Heroku 。

+0

因此,當您將它部署到Heroku時,您正在預編譯資產,對吧? –

+0

是的,那是對的。他們都是預編譯的。 –

+0

您應該使用Chrome的檢查器查看瀏覽器提供的樣式表的名稱。你會看到Rails已經在你的CSS文件中附加了一些字符串,以避免瀏覽器緩存。 –

回答

0

好的,找出問題所在。

由於某種原因,當請求不是來自Web瀏覽器時,應用程序訪問memcached的方式不同,因爲我的memcached服務器被禁用,它拋出的是完全不相關的錯誤。謝謝你的幫助!