在capistrano 3 docs(http://capistranorb.com/documentation/advanced-features/remote-file/)中提供了一个示例来说明此任务(remote_file)的工作原理
namespace :deploy do
namespace :check do
task :linked_files => 'config/newrelic.yml'
end
end
remote_file 'config/newrelic.yml' => '/tmp/newrelic.yml', roles: :app
file '/tmp/newrelic.yml' do |t|
sh "curl -o #{t.name} https://rpm.newrelic.com/accounts/xx/newrelic.yml"
end
他们告诉它允许将远程文件的存在设置为先决条件。 Hovewer我仍然无法得到它是如何工作的,因为remote_file被称为外部任务代码。它实际上做了什么?有人可以解释一下吗?
如果config / newrelic.yml不存在,以及remote_file调用是如何连接的,会发生什么 :linked_files任务?
答案 0 :(得分:1)
仅调用remote_file
定义名为'config / newrelic.yml'的任务。它不执行该任务。这条线
remote_file 'config/newrelic.yml' => '/tmp/newrelic.yml', roles: :app
正在说“创建一个名为'config / newrelic.yml'的任务,它有一个名为'/tmp/newrelic.yml'的先决任务'”。 file '/tmp/newrelic.yml'
部分定义了此先决条件任务。最后,task :linked_files => 'config/newrelic.yml'
指定要执行的名为'config / newrelic.yml'的先决条件任务,我们使用remote_file
方法定义。