Capistrano:如何共享 Capistrano 任务?
Capistrano: How to share Capistrano tasks?
我的暂存和生产部署脚本之间有一些共享任务。编写共享任务的最佳实践是什么?例如,我是否需要将它们移动到 /lib/capistrano/tasks
下的单独文件中?如果是这样,我该怎么做?我的意思是文件扩展名是什么以及如何命名这些任务并通过 cap
命令访问它们?
Capistrano 的典型多级配置包含以下文件:
Capfile
config/deploy.rb
config/deploy/staging.rb
config/deploy/production.rb
staging.rb
或 production.rb
中的任务仅在这些环境中可用。
如果您希望任何环境都可以访问某些任务,您可以将它们放在 config/deploy.rb
。
如果你想把它们提取到一个单独的文件中,那么就像你说的,你可以把它们放在lib/capistrano/tasks/*.rake
中。 (通常 Capfile
应该包含一行来加载这些任务。)
例如,有一个自定义任务unicorn:restart
,它会重启独角兽。我们可以创建一个名为 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 }
我的暂存和生产部署脚本之间有一些共享任务。编写共享任务的最佳实践是什么?例如,我是否需要将它们移动到 /lib/capistrano/tasks
下的单独文件中?如果是这样,我该怎么做?我的意思是文件扩展名是什么以及如何命名这些任务并通过 cap
命令访问它们?
Capistrano 的典型多级配置包含以下文件:
Capfile
config/deploy.rb
config/deploy/staging.rb
config/deploy/production.rb
staging.rb
或 production.rb
中的任务仅在这些环境中可用。
如果您希望任何环境都可以访问某些任务,您可以将它们放在 config/deploy.rb
。
如果你想把它们提取到一个单独的文件中,那么就像你说的,你可以把它们放在lib/capistrano/tasks/*.rake
中。 (通常 Capfile
应该包含一行来加载这些任务。)
例如,有一个自定义任务unicorn:restart
,它会重启独角兽。我们可以创建一个名为 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 }