我试图运行
Rails.cache.clear
当我将我的应用程序部署到服务器时,通过Capistrano任务。 这是我的代码
namespace :deploy do
desc 'Clear memcache'
task :clear_memcache do
on roles(:app) , in: :sequence, wait: 2 do
Rails.cache.clear
CACHE.flush
end
end
before :starting, :check_revision
after :finishing, :compile_assets
after :finishing, :cleanup
after :finishing, :copy_missing_css
after :finishing, :clear_cache
after :finishing, :clear_memcache
after :finishing, :restart
end
但我得到了这个错误。
The deploy has failed with an error: #<NameError: uninitialized constant Rails>
我该如何解决这个问题?
谢谢!
答案 0 :(得分:0)
您的Capistrano任务不是rails应用程序 - 其中Rails
不存在。即使它确实如此,这是在执行部署的机器上执行的代码,而不是您的服务器(并且memcached不应该是外部可用的)
您想要的是在服务器上运行某些内容(使用execute
方法),或通过为您调用执行的runner
或rake
等帮助程序。这使用bin/rails runner
来执行代码
within release_path do
with rails_env: fetch(:rails_env) do
runner "Rails.cache.clear"
end
end
您还可以创建一个rake任务并通过execute
调用它。另外,您只需要运行一次 - 它不需要在所有服务器上重复运行。