Ответ 1
Я предлагаю использовать:
system("git push dreamhost")
или
output = %x[git push dreamhost]
Это просто Ruby!
Я определил пользовательскую задачу 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"]
как мне заставить его выполнять локально вместо этого?
Я предлагаю использовать:
system("git push dreamhost")
или
output = %x[git push dreamhost]
Это просто Ruby!
Или используйте run_locally
, чтобы запустить изначально с Capistrano, и по-прежнему получать правильные записи и все, что хороший материал
Для комментатора, указавшего, что 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
Вы также можете использовать:
require 'rake' # Access to sh command
[...]
desc "Push code to Dreamhost"
task :push do
sh "git push dreamhost"
end