如何在每次任务中运行capistrano任务?

时间:2017-09-05 16:22:09

标签: capistrano capistrano3 whenever whenever-capistrano

我已正确设置whenever宝石。如何从我的capistrano whenever运行schedule.rb

我的schedule.rb

every 1.minute, roles: [:app] do
   # how to run here a capistrano task
   # invoke 'my_app:test'
end

我的capistrano任务:

namespace :my_app do

  desc 'test'

  task :test do
    on roles(:web) do
      puts "the task runs"
    end
  end
end

或者我应该将该任务移到rake任务中。我应该在whenevercapistrano内运行该佣金任务吗?

2 个答案:

答案 0 :(得分:0)

我建议你使用后一个选项,将逻辑移动到rake任务并从Capistrano执行它。这样做会更加容易和清洁。

答案 1 :(得分:0)

Jan,您可能会发现文档非常有用 https://github.com/javan/whenever。下面的代码示例 - 我只是从文档中复制和编辑它。

schedule.rb

# run this task only on servers with the :app role in Capistrano
# see Capistrano roles section below
every :day, at: '12:20am', roles: [:web] do
  rake "app_server:task"
end

lib/tasks/test_task.rb

namespace :my_app do
  desc 'test'
  task :test do
    puts "the task runs"
  end
end

我相信创建 Rake 任务并通过 When 运行它更容易。你可以选择角色,所以基本上你不需要使用Capistrano任务(我相信你只是因为角色而想使用它)。

相关问题