Где разместить до и после в рецепте Капистрано?

Глупый вопрос, но у нас есть неверный рецепт Capistrano, и я хочу убедиться, что мы не используем after и before неправильно?

Принадлежат ли эти задачи до и после к блоку пространства имен :deploy или за его пределами? Я вижу примеры как здесь.

Это выдержка из проблемного файла deploy.rb:

namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end

  # copy database.yml into project
  task :copy_database_config do
    production_db_config = "/Library/RoRconfig/#{application}.yml"
    run "cp #{production_db_config} #{current_release}/config/database.yml"
    `puts "replaced database.yml with live copy"` 
  end

  task :pipeline_precompile do
    run "cd #{release_path}; RAILS_ENV=production rake assets:precompile"
  end

  after "deploy:update_code", "deploy:pipeline_precompile"         ### <---
  before "deploy:finalize_update", "deploy:copy_database_config"   ### <---
end

person Meltemi    schedule 08.08.2011    source источник


Ответы (2)


Я использую настройку, похожую на:

after :deploy, "deploy:update_code", "deploy:pipeline_precompile"
before :deploy, "deploy:finalize_update", "deploy:copy_database_config"

namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end

  # copy database.yml into project
  task :copy_database_config do
    production_db_config = "/Library/RoRconfig/#{application}.yml"
    run "cp #{production_db_config} #{current_release}/config/database.yml"
    `puts "replaced database.yml with live copy"` 
  end

  task :pipeline_precompile do
    run "cd #{release_path}; RAILS_ENV=production rake assets:precompile"
  end
end
person ezkl    schedule 08.08.2011

Согласно документу capistrano по адресу https://capistranorb.com/documentation/getting-started/before-after/, вот как они предлагают внутри и снаружи пространства имен :deploy:

# call an existing task
before :starting, :ensure_user
after :finishing, :notify

# or define in block
namespace :deploy do
  before :starting, :ensure_user do
    #
  end

  after :finishing, :notify do
    #
  end
end

Тем не менее, будьте осторожны, чтобы не помещать эти хуки в свой собственный файл рейка capistrano, который вы импортируете, поскольку порядок загрузки может привести к тому, что он не будет существовать.

person konyak    schedule 22.02.2019