Можно ли предоставить список строк для задач Capistrano? - PullRequest
0 голосов
/ 18 августа 2011

У меня есть задача, команда которой в run работает одинаково, за исключением одного значения. Это значение будет из списка потенциальных значений. Я хотел бы создать задачу, которая будет использовать этот список значений для определения задачи, а затем использовать это же значение в команде, определенной в «run». Дело в том, что было бы здорово определить задачу так, чтобы мне не приходилось повторять почти идентичные определения задач для каждого значения.

Например: я хочу задачу, которая получит статус отдельной программы из списка программ, которые я определил в массиве. Я хотел бы определить задачу следующим образом:

set programs = %w["postfix", "nginx", "pgpool"]
programs.each do |program|
  desc "#{program} status"
  task :#{program} do
    run "/etc/init.d/#{program} status"
  end
end

Это, очевидно, не работает, но, надеюсь, это показывает, что я пытаюсь здесь.

Мысли

1 Ответ

0 голосов
/ 18 августа 2011

Ну, я ответил на свой вопрос ... с небольшой пробой и ошибкой. Я также проделал то же самое с пространством имен, поэтому управление службами было приятным и элегантным. Работает довольно красиво!

set :programs, %w[postfix nginx pgpool]
set :init_commands, %w[status start stop]

# init.d service control
init_commands.each do |init_command|
  namespace :"#{init_command}" do
    programs.each do |program|
      desc "#{program} #{init_command}"
      task :"#{program}" do
        run "/etc/init.d/#{program} #{init_command}"
      end
    end
  end
end
...