1

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

4

1 回答 1

2

Capistrano 的典型多级配置将具有以下文件:

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

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

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

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

例如,有一个自定义任务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 }
于 2015-01-31T18:07:29.390 回答