Capistrano:如何分享Capistrano任务?

时间:2015-01-31 15:26:45

标签: ruby-on-rails deployment capistrano capistrano3 rvm-capistrano

我的暂存和生产部署脚本之间有一些共享任务。编写共享任务的最佳做法是什么?我需要将它们移到/lib/capistrano/tasks下的单独文件中吗?如果是这样,我该怎么做?我的意思是什么是文件扩展名以及如何命名这些任务并通过cap命令访问它们?

1 个答案:

答案 0 :(得分:2)

Capistrano的典型多级配置将包含以下文件:

  • Capfile
  • config/deploy.rb
  • config/deploy/staging.rb
  • config/deploy/production.rb

staging.rbproduction.rb中的任务仅在这些环境中可用。

如果您希望任何环境都可以访问某些任务,可以将它们放在config/deploy.rb

如果您想将它们提取到一个单独的文件中,就像您说的那样,您可以将它们放在lib/capistrano/tasks/*.rake中。 (通常情况下,Capfile应包含一行来加载这些任务。)

例如,有一个自定义任务unicorn:restart可以重启Unicorn。我们可以创建一个名为lib/capistrano/tasks/unicorn.rake的文件,并添加以下文件:

namespace :unicorn do
  desc "Restart Unicorn"
  task :restart do
    # ...
  end
end

修改

您可以将以下行添加到Capfile,以加载lib/capistrano/tasks/*.rake下的共享任务。

# Load custom tasks from `lib/capistrano/tasks' if you have any defined
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }