Где разместить «до» и «после» в рецепте Capistrano? - PullRequest
6 голосов
/ 08 августа 2011

Глупый вопрос, но у нас сломан рецепт 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

Ответы [ 2 ]

4 голосов
/ 08 августа 2011

Я использую настройки, подобные:

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
0 голосов
/ 22 февраля 2019

В соответствии с документом Капистрано на https://capistranorb.com/documentation/getting-started/before-after/, вот как они предлагают для внутреннего и наружного: развернуть пространство имен:

# 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, который вы импортируете, поскольку порядок загрузки может привести к тому, что он не будет существовать.

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