LINUX.ORG.RU

Запуск task

 ,


0

1

Покажите пример вызова заданной task (deploy:run_migrate) изнутри хука (after 'deploy:update_code' ...). Так, как написано сейчас падает с ошибкой, а пример нужного, найти не могу, везде однострочники типа after 'deploy:update_code', 'deploy:run_migrate'.

command finished in 1578ms
/home/reaper/.rvm/gems/ruby-1.9.3-p194@rails3/gems/capistrano-2.13.4/lib/capistrano/configuration/namespaces.rb:83:in `block in namespace': wrong number of arguments (1 for 0) (ArgumentError)
	from ./config/deploy.rb:50:in `block in load'
	from /home/reaper/.rvm/gems/ruby-1.9.3-p194@rails3/gems/capistrano-2.13.4/lib/capistrano/callback.rb:25:in `call'
	from /home/reaper/.rvm/gems/ruby-1.9.3-p194@rails3/gems/capistrano-2.13.4/lib/capistrano/callback.rb:25:in `call'
	from /home/reaper/.rvm/gems/ruby-1.9.3-p194@rails3/gems/capistrano-2.13.4/lib/capistrano/configuration/callbacks.rb:141:in `block in trigger'
...
namespace :deploy do
  task :run_migrate do
    run "cd #{deploy_to}/current && rake db:migrate"
  end
end

after 'deploy:update_code', :roles => :app do
  run "rm -rf #{current_release}/db/data"
  run "ln -s #{deploy_to}/shared/data #{current_release}/db"

  deploy:run_migrate
end
★★

Ответ на: комментарий от kelyar

./config/deploy.rb:50:in `block in load': uninitialized constant Capistrano::Configuration::Rake (NameError)

Reaper ★★
() автор топика

http://rubydoc.info/github/capistrano/capistrano/master/Capistrano/Configurat...
Вот тут метод в доке какой-то, возможно можно попробовать найти объект этого класса в пространстве имен и запустить этот метод.. Но, ты уверен, что тебе это нужно, ведь вообще-то задачи запускаются последовательно, а не одна из другой. Может тебе просто сделать метод «run_migrate» ?

special-k ★★★
()
Ответ на: комментарий от special-k

Затупил я, вот правильный синтаксис:

deploy.run_migrate

Всем спасибо.

Но, ты уверен, что тебе это нужно, ведь вообще-то задачи запускаются последовательно, а не одна из другой.

Да я просто хочу одним cap deploy вообще всё делать, не хочу помнить, делал я там в каком-то из коммитов миграции или нет. Я делаю кучу коммитов, потом git push, потом cap deploy. git push раз в несколько дней, поэтому последовательно нужные задачи запускать неудобно, проще весь цикл прогнать в одной команде.

Reaper ★★
() автор топика

спасибо, хорошая идея)

stevejobs ★★★★☆
()
Ответ на: комментарий от special-k

У меня after 'deploy:update_code', :roles => :app do ... содержит кучу кода, которую я вырезал здесь в примере, хочу в одном месте держать содержимое хука, не раскидывая его по коду в виде однострочников или блок кода + однострочник(и).

Втрое - я забыл сделать git add -A сегодня и задеплоил, плюс ещё не было кода вызова запуска миграций в deploy.rb, а на продакшене лежала старая база. После того, как сделал тот деплой, понял, что надо запустить миграцию, сделал в виде однострочника, но следующий деплой, вызывая rake db:migrate, в силу ещё не добавленных файлов в гит, не проводил миграции, я подумал, что что-то тут не то и решил попробовать внести однострочник внутрь блока в хук, посмотреть результат - т.к. не был уверен, что можно несколько хуков на одно событие вешать. Попутно вспомнил о том, что не добавил новые файлы в гит, добавил их, задеплоил всё и провёл миграцию, но чисто из принципа решил разобраться, как правильно внутри блока кода вызывать task. Слегка запутанное описание вышло. :)

Reaper ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.