Подтвердить что ты не робот

Как выполнить задачу Capistrano локально?

Я определил пользовательскую задачу Capistrano, которая должна выполняться локально (на моей машине разработки):

desc "Push code to Dreamhost"
task :push do
  run "git push dreamhost"
end

однако, когда я пытаюсь запустить cap push, он запускает его на удаленном компьютере, т.е.

* executing `push'
* executing "git push dreamhost"
  servers: ["ec2-999-99-999-999.compute-1.amazonaws.com"]

как мне заставить его выполнять локально вместо этого?

4b9b3361

Ответ 1

Я предлагаю использовать:

system("git push dreamhost")

или

output = %x[git push dreamhost]

Это просто Ruby!

Ответ 2

Или используйте run_locally, чтобы запустить изначально с Capistrano, и по-прежнему получать правильные записи и все, что хороший материал

Ответ 3

Для комментатора, указавшего, что run_locally не показывает вывод, вы должны вывести вывод в переменную, а затем распечатать его, чтобы увидеть его. Вот так:

task :testing_run_locally do
    output = run_locally "hostname"
    puts "OUTPUT: " + output
end

Недостатком является то, что вы не увидите никакого вывода, пока команда не закончится. Не очень важно для команд, которые не запускаются долго, но что-то, что выполняется в течение нескольких минут, вызовет развёртывание, как будто оно висело до тех пор, пока оно не закончится. Существует открытый запрос pull для Capistrano, который добавляет вывод команды в реальном времени для run_locally: https://github.com/capistrano/capistrano/pull/285

Ответ 4

Вы также можете использовать:

require 'rake'     # Access to sh command
[...]
desc "Push code to Dreamhost"
task :push do
   sh "git push dreamhost"
end