簡體   English   中英

當我在 Capistrano 任務中將我的應用程序部署到 vps 時,不知道如何構建任務“環境”

[英]Don't know how to build task 'environment' When i deploy my app to vps in Capistrano task

我使用 capistrano 將我的應用程序部署到 vps。 一切正常,但只有 :environment 任務。

這是我的代碼

namespace :deploy do

desc 'Clear memcache'
  task clear_memcache: :environment do
    on roles(:app) , in: :sequence, wait: 2 do
      ::Rails.cache.clear
      CACHE.flush
    end
  end

    after  :finishing,    :clear_memcache

end

但我總是收到這個錯誤。

#<RuntimeError: Don't know how to build task 'environment' (see --tasks)>

我怎樣才能解決這個問題? 謝謝!

我認為您正在混合兩個概念。 一個耙子任務和一個 capistrano 任務。 Rake 任務確實使用:environment子任務,而 capistrano 任務則不使用。 Capistrano 任務不能(AFAIK)在服務器上的 rails 應用程序的上下文中直接調用 ruby​​ 代碼,這就是 rake 任務所做的。

您實際上可能想要的是定義一個清除緩存的 rake 任務和一個將在部署服務器上調用 rake 任務的 capistrano 任務

試試這些:

清除緩存的 rake 任務:

# put this in Rakefile or any other rake file under lib/tasks
desc 'Clear memcache'
task clear_memcache: :environment do
  ::Rails.cache.clear
  CACHE.flush
end

在服務器上調用 rake 的 capistrano 任務:

# config/deploy/production.rb
namespace :deploy do

  desc 'Clear memcache'
  task :clear_memcache do
    on roles(:app) , in: :sequence, wait: 2 do
      within release_path do
        with rails_env: fetch(:rails_env) do
          execute 'rake', 'clear_memcache'
        end
      end
    end
  end

  after  :finishing, :clear_memcache    
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM