2016-03-15 60 views
1

我試圖Capistrano的任務運行未初始化的常量Rails當我試圖在部署到vps時在Capistrano任務中運行Rails.cache.clear?

Rails.cache.clear 

當我將應用程序部署到服務器。 這是我的代碼

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

你應該嘗試:: Rails的絕對參考這個模塊,或者你需要使用require'rails'來解決這個問題。 –

+0

我該如何使用:: Rails? – user3403614

+0

:: Rails.cache.clear –

回答

0

您的Capistrano任務不是導軌應用程序 - 在他們的內部Rails不存在。即使這樣做,這是在執行部署的機器上執行的代碼,而不是您的服務器(並且memcached不應該在外部可用)

您想要的是在服務器上運行某些東西,您使用execute方法執行某些操作,或者通過助手,例如runnerrake來爲您執行。它使用bin/rails runner執行代碼

within release_path do 
    with rails_env: fetch(:rails_env) do 
    runner "Rails.cache.clear" 
    end 
end 

您還可以創建一個rake任務,並調用它通過execute。另外,您只需要運行一次 - 它不需要在所有服務器上重複。

相關問題