remote_file capistrano 3方法

时间:2014-09-03 15:15:21

标签: capistrano capistrano3

在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任务?

1 个答案:

答案 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方法定义。