caches_page で作成されたキャッシュが Capistrano デプロイ後も存続するように Rails を構成することは可能ですか? つまり、パブリック ディレクトリではなく共有ディレクトリにキャッシュを保存するように構成できますか?
3 に答える
4
受け入れられた答えはOKですが、一般的には、展開時にすべてをコピーするのではなく、キャッシュフォルダーをシンボリックリンクする方が適切です。
このようにして、shared /ディレクトリにフォルダを作成し、展開時に次のようにシンボリックリンクできます。
namespace :deploy do
desc "Link cache folder to the new release"
task :link_cache_folder, :roles => :app, :on_error => :continue do
run "ln -s #{shared_path}/cache #{latest_release}/public/cache"
end
end
before "deploy:symlink", "deploy:link_cache_folder"
于 2010-03-09T12:31:28.763 に答える
1
Capistrano は実際には Rails に関連したものではなく、Rails コミュニティが展開のために一般的に使用しているだけです。いいえ、必要なことを行うように「Railsを構成」することはできません。できることは、「現在」としてシンボリックリンクされる前に、シェルコマンドを実行してキャッシュを新しいデプロイメントにコピーするタスクを Capfile に追加することです。
namespace :deploy do
desc "Copy cache to the new release"
task :cache_copy, :roles => :app, :on_error => :continue do
on_rollback {
run "rm -rf #{latest_release}/public/cache"
}
run "cp -a #{current_path}/public/cache #{latest_release}/public"
end
end
before "deploy:symlink", "deploy:cache_copy"
しかし、キャッシュが新しいコードの出力と同期しなくなる可能性が高いため、キャッシュされたページに対してそのようなことをしたいとは思わないでしょう。
于 2010-03-08T23:16:52.747 に答える
0
public/cache ディレクトリを共有下にシンボリックリンクするには、これで十分であることがわかりました。
set :shared_children, shared_children + ["public/cache"]
于 2013-02-10T19:09:42.083 に答える