1

У меня есть общие задачи между моими сценариями развертывания и производства. Какова наилучшая практика написания общих задач? Нужно ли переместить их в отдельный файл под номером /lib/capistrano/tasks? И если да, то как мне это сделать? Я имею в виду, что будет расширением файла и как пропустить эти задачи и получить к ним доступ через команду cap?Capistrano: Как поделиться задачами Capistrano?

+0

Это сообщение стоит прочитать: http://vladigleba.com/blog/2014/04/10/deploying-rails-apps-part-6-writing-capistrano-tasks/ – zx1986

ответ

2

Типичная многоступенчатой ​​конфигурации Capistrano будет иметь следующие файлы:

  • Capfile
  • config/deploy.rb
  • config/deploy/staging.rb
  • config/deploy/production.rb

Задачи помещены в staging.rb или production.rb доступны только в этих средах.

Если вы хотите, чтобы некоторые задачи были доступны любой среде, вы можете поместить их в config/deploy.rb.

Если вы хотите извлечь их в отдельный файл, то, как вы сказали, вы можете разместить их в lib/capistrano/tasks/*.rake. (Обычно Capfile должен содержать строку для загрузки этих задач.)

Например, есть индивидуальная задача unicorn:restart, которая перезапускает Единорог. Мы можем создать файл с именем lib/capistrano/tasks/unicorn.rake, и добавьте следующий файл:

namespace :unicorn do 
    desc "Restart Unicorn" 
    task :restart do 
    # ... 
    end 
end 

EDIT

Вы можете добавить следующую строку в Capfile, чтобы загрузить общие задачи в lib/capistrano/tasks/*.rake.

# Load custom tasks from `lib/capistrano/tasks' if you have any defined 
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } 
+0

Я редактировал ответ чтобы добавить необходимую информацию, которую я искал, и пометил ваш вопрос как принятый. Спасибо Домону! –

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