Как запустить команды оболочки на сервере в Capistrano v3?

Я новичок в Capistrano, и я пытался использовать DSL Capistrano для запуска команд оболочки на сервере ("запустить", "выполнить" и т. Д.), Но, похоже, это устарело. После поиска и поиска функционального эквивалента я все еще теряюсь.

Текущий код:

desc 'Do something'
task :do_something
  execute 'echo sometext'
end

Выход:

    cap aborted!
    undefined method `execute' for main:Object
    /Users/Justin/Dropbox/xxxx/xxxx/xxxx/Capfile:45:in `block (2 levels) in <top (required)>'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bundler/gems/capistrano-2dc1627838f9/lib/capistrano/application.rb:12:in `run'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bundler/gems/capistrano-2dc1627838f9/bin/cap:3:in `<top (required)>'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/cap:23:in `load'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/cap:23:in `<main>'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'
    /Users/Justin/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'
    Tasks: TOP => deploy:do_something

1 ответ

Решение

В Capistrano v3 вы должны указать, где вы хотите запустить код, вызвав on со списком имен хостов, например

task :execute_on_server do
  on "root@example.com" do
    execute "some_command"
  end
end

Если у вас настроены роли, вы можете использовать roles метод для удобства:

role :mailserver, "root@mail.example.com"

task :check_mail do
  on roles(:mailserver) do
    execute "some_command"
  end
end

Существует некоторая документация v3 здесь: http://www.capistranorb.com/

Другие вопросы по тегам