9

WebRickを使用して私のウェブサイトを実動モードでテストすることはできません。キャッシュエラーが発生しています。開発とテストモードでは、すべてが完璧に動作します。WebRickを使用して、プロダクションで「cache:[GET /] miss」が表示されるのはなぜですか?

私は設定/環境/ 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

+0

いいえ、アプリケーションは新しく、私はそのファイルに触れていません。 –

+0

'production.log'にエラーがありますか? – Baldrick

答えて

5

問題は十分に設定する必要がありアセットパイプライン、ですファイルは自動的にプリコンパイルされません。

私の場合、javacriptファイル(javascript_include_tag)を1ページだけに挿入していたので、application.jsマニフェストには含まれていませんでした。

assets:precompileを実行すると、アセットパイプラインでファイルがプリコンパイルされません。

不足しているファイルを含めるために、我々はconfig/environments/production.rbを編集し、この行を追加する必要があります。

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

あなたは、この行がすでに存在していることがわかりますが、それはコメントしています。より明確にするためにコメントを読んでください。詳細は、official asset pipeline guideをご覧ください。

0

不足しているページに関するこのメッセージは、Rack :: Cacheミドルウェアに送信されます。 あなただけのラックを削除し、あなたのレールのアプリでページキャッシュを使用する必要がいけない場合は::キャッシュのconfig/application.rbファイルに:

require 'rack/cache' 

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

私はダウンボートではありませんでしたが、機能を使用しないことをOPに伝えても、彼の問題は解決しません。 – Basic

+0

@Basic Thx、私の間違いを理解する – ilya

0

暫定的な解決策として、次のことが私のためのトリックでした。

私はあなたがキャッシュを得ることはありませんので、本番でアプリケーションを実行するにはtrue

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

falseからconfig.assets.compile行を変更するconfig/environments/production.rbファイルを変更:[GET /] を欠場あなたをチェックしてください{プロジェクト}プリコンパイル

:/パブリックフォルダには、彼らのすべての資産フォルダには、事前に バンドルのexecすくい資産を使用して資産をコンパイルし、その後 が存在する場合はされていません

これが行われた後:

は生産にconfig.assets.compileを設定します。rb

その後、運用環境でWebAppを再起動します。

この承認は私のために働いてくれました。

もしあなたが[GET /] missを取得しますが、あなたのアプリケーションは正しく動作します。

関連する問題