如何在 whenever 任务中 运行 capistrano 任务?
How to run a capistrano task within a whenever task?
我 whenever
gem 设置正确。我如何 运行 我的 whenever
schedule.rb
中的 capistrano
?
我的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
任务中。我应该 运行 在 whenever
和 capistrano
中完成任务吗?
我建议您选择后一种方法,将逻辑移至 rake 任务并从 whenever 和 Capistrano 执行它。这样做会更容易、更干净。
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
我相信通过 Whenever 创建 Rake 任务和 运行 它更容易。你可以选择角色,所以基本上你不需要使用Capistrano任务(我相信你只是因为角色而想使用它)。
我 whenever
gem 设置正确。我如何 运行 我的 whenever
schedule.rb
中的 capistrano
?
我的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
任务中。我应该 运行 在 whenever
和 capistrano
中完成任务吗?
我建议您选择后一种方法,将逻辑移至 rake 任务并从 whenever 和 Capistrano 执行它。这样做会更容易、更干净。
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
我相信通过 Whenever 创建 Rake 任务和 运行 它更容易。你可以选择角色,所以基本上你不需要使用Capistrano任务(我相信你只是因为角色而想使用它)。