2


0

Passengerを使ったRails CSSキャッシングの設定

私は* Passenger とRailsの `:cache ⇒ true`を使ってすべてのCSSを1つの大きなファイルにキャッシュしています。 デプロイは Capistrano *によって行われます。

時々(!)、アプリが再起動された後にmemによって生成された `all.css`ファイルが見つかりません

ActionController::RoutingError (No route matches "/stylesheets/all.css" with {:method=>:get}):
  passenger (2.2.2) lib/phusion_passenger/rack/request_handler.rb:81:in `process_request'
  passenger (2.2.2) lib/phusion_passenger/abstract_request_handler.rb:203:in `main_loop'

別の restart.txt`ファイルを手動で配置するか cap deploy:restart`を実行すると問題は解決します。

大したことではありませんが、チェックして修正するのは面倒です。 誰が私が間違っているのかという考えを持っていますか?

Edit

私の `deploy:restart`はこんな感じです(まさに私が手動でやっていることです)。

desc "Restarting mod_rails with restart.txt"
task :restart, :roles => :app, :except => { :no_release => true } do
  run "touch #{current_path}/tmp/restart.txt"
end

また、私はキャッシングに特別な(外部の)CSSファイルを使用していません。

<%= stylesheet_link_tag "clear", "application", "contracts", :cache => true %>

2 Answer


1


デプロイの最後には、(deploy:restartタスクの一部として)実行しているはずです。

touch tmp / restart.txt

これにより、Passengerは新しいコードのためにRailsスタックをリロードする必要があることがわかり、最初のリクエストで新しいスタイルシートがキャッシュされます。

現在のdeploy:restartタスクはどのようなものですか?