我将缓存应用到我的heroku rails应用程序,它运行良好.但每次我部署到heroku时,我也想自动清除缓存.
所以我用Google搜索,我发现了这个.
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
Run Code Online (Sandbox Code Playgroud)
但是当我翻阅这个脚本时,它只显示了heroku控制台命令行,但是Rails.cache.clear命令没有输入.(我猜这是因为heroku控制台是互动的)
和
system "heroku console Rails.cache.clear"
Run Code Online (Sandbox Code Playgroud)
不适用于雪松应用程序.
我怎么解决这个问题?
谢谢.
我正在开发一个Web应用程序,在Github上托管源代码并在Heroku上运行应用程序.一切都很好,但我有问题,我无法绕过头.在部署我的代码之前,我运行一些脚本来优化代码(缩小,连接文件等).heroku应用程序仅使用应用程序的优化版本.
基本上,我有两个文件夹:dev和production.Dev包含我编写的源代码,production由我的构建脚本生成(我使用grunt和requirejs).目前,这两个文件夹都在我的Git存储库中,并且都被推送到Github和Heroku.我更喜欢的只是dev在Github上而且只production在Heroku上.我阅读了一些文章如何为Heroku设置不同的分支,如本博客所述.我可以设置一个生产分支,只有production文件夹在那里,同时保持dev文件夹到我的主分支?或者我需要单独的存储库?
有没有人尝试类似的东西?我认为这不是一件与众不同的事情.
我在lib/tasks/foo.rake中有这个:
Rake::Task["assets:precompile"].enhance do
print ">>>>>>>> hello from precompile"
end
Rake::Task["assets:precompile:nondigest"].enhance do
print ">>>>>>>> hello from precompile:nondigest"
end
Run Code Online (Sandbox Code Playgroud)
当我在rake assets:precompile本地运行时,两个消息都被打印出来.
当我推送到heroku时,只打印非自动消息.但是,根据buildpack,push正在执行与本地完全相同的命令.
为什么基础资产的增强:预编译案例在heroku上不起作用但在本地工作?
我正在使用Redis缓存(django-redis)为我在Heroku上托管的Django应用程序.更具体一点(虽然我认为它与可能的解决方案无关),但我正在使用Redis Cloud插件.
如何在部署时清除缓存?我正在寻找类似于Heroku Deploy上的Clear Memcached的答案,除了Django,而不是Rails.