Могу ли я разделить мой файл Capistrano? - PullRequest
0 голосов
/ 07 сентября 2011

У меня есть capfile, в котором определена роль, с кучей задач ниже. Это прекрасно работает, но я хочу иметь возможность легко (и программно) обновить машины в списке ролей. Я знаю, что мог бы сделать это на месте, но, чтобы быть в безопасности, я хотел бы иметь возможность разбить мой capfile на (по существу) два файла: hosts и tasks

В настоящее время (в общем):

role :machines,
"machine1",
"machine2"

desc "This is task 1"
task :task1 do
  # stuff
end

Я бы хотел иметь что-то вроде следующего (игнорировать «синтаксис»):

role :machines ==> {Get this information from 'hosts.cap' or something}

desc "This is task 1"
task :task1 do
  # stuff
end

Есть ли способ сломать файл? Или мне для этого нужно погрузиться в источник?

Ответы [ 2 ]

1 голос
/ 12 марта 2013

Поскольку Capfile - это просто Ruby, вы можете использовать код Ruby, чтобы делать то, что вы хотите.Например, если ваш файл hosts.cap выглядит следующим образом:

db-master.example.com
db-slave1.example.com

, вы получите его в массив с таким кодом Ruby:

File.read('hosts.cap').strip.split

и передадите его role вызовите правильно, используйте оператор splat (*):

role :db_hosts, *File.read('hosts.cap').strip.split

, хотя я бы порекомендовал поместить его в две части, потому что он понятнее:

machines = File.read('hosts.cap').strip.split
role :db_hosts, *machines
0 голосов
/ 21 октября 2011

Ваниль Capfile используется для доставки со строкой load 'config/deploy' - возможно, вы можете использовать это для загрузки нескольких файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...