2012-01-31 58 views
9

使用的WEBrick,因爲它是提高高速緩存錯誤,我不能測試我在生產模式網站。在開發和測試模式下,一切正常。爲什麼我得到「緩存:GET /]小姐」在生產中使用的WEBrick?

我已在配置/環境/ production.rb此選項:

config.serve_static_assets = true 

然後我跑:

bundle exec rake assets:precompile 

現在我啓動服務器:

david$ rails s -e production 
=> Booting WEBrick 
=> Rails 3.2.1 application starting in production on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
[2012-01-31 19:52:35] INFO WEBrick 1.3.1 
[2012-01-31 19:52:35] INFO ruby 1.9.3 (2011-10-30) [x86_64-darwin11.2.0] 
[2012-01-31 19:52:35] INFO WEBrick::HTTPServer#start: pid=13329 port=3000 

當我去http://localhost:3000我得到「很抱歉,但出事了。」在終端這是它輸出:

cache: [GET /] miss 

我在這裏停滯。我不知道該怎麼做。

+0

您是否更改了application.rb中的'config.cache_store'? – Baldrick 2012-01-31 19:03:05

+0

不,應用程序是新的,我沒有觸及那個文件。 – 2012-01-31 19:04:40

+0

好的。 'production.log'中是否有錯誤? – Baldrick 2012-01-31 19:47:58

回答

5

的問題是與資產管道,其在得到很好的配置生產模式,因爲文件不會自動預編譯。

在我的情況下,我插入了一個僅存在於一個頁面中的JavaScript文件(與javascript_include_tag),所以它不包含在application.js清單中。

在這種情況下,運行assets:precompile當資產流水線沒有預編譯的文件。

爲了包括丟失的文件,我們需要編輯config/environments/production.rb並添加此行:

config.assets.precompile += %w(script1.js) 

你會發現,這條線已經存在,但它的評論。閱讀評論以獲得更多解釋。欲瞭解更多信息,請查看official asset pipeline guide

0

此消息有關缺頁發送機架::緩存中間件。 如果你不需要使用頁面緩存在你的Rails應用程序,只是刪除機架::緩存中的config/application.rb中的文件:

require 'rack/cache' 

module DemoApp 
    class Application < Rails::Application 
    config.middleware.delete Rack::Cache 
    # ... 
    end 
end 
+1

我不是downvote - 但告訴OP不要使用功能並不能解決他的問題。 – Basic 2012-02-01 16:37:52

+0

@Basic Thx,我明白我的錯誤 – ilya 2012-02-01 17:18:24

0

作爲臨時解決方案,以下爲我所用。

我改變了config/environments/production.rb文件來改變從falseconfig.assets.compiletrue

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = true 
0

要運行在生產中的應用,這樣你就無法獲得緩存:GET /]錯過 請檢查您(項目) /公共文件夾,是他們的任何資產文件夾存在 如果不是那麼預編譯使用 束EXEC耙資產資產:預編譯

一旦做到這一點:

生產設置config.assets.compile真正。rb

然後在生產環境中重新啓動WebApp。

這對我來說很有效,希望能爲你效勞。

如果您使用的是rails 3.2.0,您會得到[GET /]缺失,但您的應用程序將正常工作。

相關問題