37

Heroku Rails アプリにキャッシュを適用したところ、うまく機能しました。しかし、heroku にデプロイするたびに、キャッシュも自動的にクリアしたいと考えています。

だから私はグーグルでこれを見つけました。

task :after_deploy, :env, :branch do |t, args|
  puts "Deployment Complete"
  puts "Cleaning all cache...."
  FileUtils.cd Rails.root do
    sh %{heroku run console}
    sh %{Rails.cache.clear}
  end
end

しかし、このスクリプトをかき集めたところ、heroku コンソールのコマンド ラインが表示されただけで、Rails.cache.clear コマンドは入力されませんでした。(herokuコンソールがインタラクティブだからだと思います)

system "heroku console Rails.cache.clear"

杉のアプリでは機能しません。

どうすればこの問題を解決できますか?

ありがとう。

4

8 に答える 8

43

Rails には組み込みの rake タスクがあります。

rake tmp:clear
于 2013-05-28T18:29:23.750 に答える
39

以下は杉で動作するはずです:

heroku run console

..次に、heroku コンソールが起動するまで 5 秒待ちます

Rails.cache.clear

その後、キャッシュがクリアされ、コンソールを終了できます。ローカル マシンは、新しいリクエストが行われるまでアセットなどをブラウザーにキャッシュすることが多いため、数回更新する必要がある場合があることに注意してください。

ただし、キャッシュしているアセットがたまたまある場合は、プッシュするたびに手動でクリアする必要はありません。アセット パイプラインをセットアップして、すべての js/css(less/ sass)/static イメージは、ファイル名の末尾にハッシュを付けてコンパイルされています。

于 2012-08-19T17:52:18.343 に答える
31

次のようなキャッシュ クリア レーキ タスクを作成できるはずです。

namespace :cache do
  desc "Clears Rails cache"
  task :clear => :environment do
    Rails.cache.clear
  end
end

デプロイ後のフックで使用できる1つのコマンドで直接呼び出します-次のように:

heroku run rake cache:clear
于 2012-12-11T01:15:11.100 に答える
4

デプロイ後に単純に rake タスクを実行したい場合は、以下を確認することをお勧めします。

https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks

本番環境で 6 か月以上使用しており、非常に安定しています。

最初に、Ruby ビルドパック セットを既に取得した後で、ビルドパックを追加します。これは、サーバーへの最初のデプロイ後に発生するはずです

heroku buildpacks:add https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks

DEPLOY_TASKS次に、実行したい rake タスクの名前だけをスペースで区切って呼び出した環境変数を設定します。

heroku config:set DEPLOY_TASKS='cache:clear

于 2017-01-06T23:43:14.570 に答える
0

heroku run rake tmp:cache:clear

http://guides.rubyonrails.org/command_line.html#tmp

于 2015-07-15T17:40:49.993 に答える
0

Heroku は現在、デプロイ後に発生するアクションのパイプラインをサポートしていません。デプロイ中に発生するステップのレシピを作成するには、Codeship や TravisCI などが必要です。

開示: 私は Codeship の顧客です。

于 2016-02-13T20:55:45.343 に答える