ruby-on-rails - rails - www heroku com login




部署到heroku後如何清除rails緩存? (5)

我將緩存應用到我的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"

不適用於雪松應用程序。

我怎麼解決這個問題?

謝謝。


Heroku當前不支持部署後發生的操作管道。 您需要Codeship或TravisCI之類的東西來創建部署期間發生的步驟配方

披露:我是Codeship的客戶。


Rails有一個內置的rake任務:

rake tmp:clear


以下應適用於雪松:

heroku run console

然後等待5秒鐘,以便Heroku控制台啟動

Rails.cache.clear

然後你應該看到緩存清除,你可以退出控制台。 請記住,您可能需要刷新幾次,因為您的本地計算機通常會在瀏覽器中緩存資產,直到它發出新請求為止。

如果它恰好是你正在緩存的資產,你不需要每次推送時都要通過手動清除,你只需要設置資產管道並確保你所有的js / css(更少/ sass)/靜態圖像正在使用文件名末尾的哈希進行編譯。


您應該能夠創建一個緩存清除rake任務,如下所示:

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

並直接在一個命令中調用它,您可以在post deploy鉤子中使用它,如下所示:

heroku run rake cache:clear




clear