2014-09-03 5 views
2

В Capistrano 3 Docs (http://capistranorb.com/documentation/advanced-features/remote-file/) пример приведен, чтобы показать, как эта задача (remote_file) работаетremote_file Capistrano 3 Метод

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 отсутствует и как вызов удаленного_файла связан с : linked_files task?

ответ

1

Вызов remote_file только определяет задачу с именем 'config/newrelic.yml'. Он не выполняет эту задачу. Линия

remote_file 'config/newrelic.yml' => '/tmp/newrelic.yml', roles: :app 

говорит «создать задачу с именем„конфигурация/newrelic.yml“, который имеет предварительные условия задачи под названием" /tmp/newrelic.yml». Часть file '/tmp/newrelic.yml' определяет эту предварительную задачу. Наконец, task :linked_files => 'config/newrelic.yml' задает требуемую задачу с именем «config/newrelic.yml», которую мы определили с помощью метода remote_file.

+0

Кажется ясным, за исключением того, что имя задачи задано как /tmp/newrelic.yml и выглядит как путь к файлу? Содержимое данного файла содержит код задачи? – antiplayer

+0

Вам нужно будет прочитать о задачах Rake-файла, которые использует файл remote_file. Задачи файла являются особенными в том, что они ожидают, что их имя будет иметь путь к файлу, который будет работать. Вот хорошее сообщение в блоге, объясняющее это http://madewithenvy.com/ecosystem/articles/2013/rake-file-tasks/ – davekaro

+0

Thanx для уточнения! – antiplayer

Смежные вопросы