Как я могу захватить вывод команды и проверить, что она говорит, без отображения команды в stdout? Например:Как захватить вывод команды без ее отображения в stdout
def update!
`git pull origin master`
if $?.exitstatus > 0
puts 'Failed to update'
elsif $?.success?
puts 'Upgraded successfully'
else
puts 'Already up to date'
end
end
Как я могу захватить выход это для того, чтобы проверить, говорит ли команда up-to date
, возникает ошибка, или успешно обновляет? Есть ли способ записать вывод в файл вместо консоли?
Обновление для ответа:
def update!
update_status = `git pull origin master 2>&1`
if $?.exitstatus > 0
puts 'error'
elsif update_status =~ /Already up-to date/
puts 'same version as origin master'
else
puts 'updated'
end
end
Выход для этого всегда будет:
[06:44:29 INFO] Updating to newest version..
updated
Даже если версия такая же, как происхождение. Что бы я хотел сделать, если это возможно, это сохранить команду stdout
команды в файл и прочитать из этого файла, чтобы узнать, была ли программа обновлена или нет. Я думаю, что это будет самый простой способ сделать это.
Вы хотите написать тесты для своего метода? –
@ sagarpandya82 Нет, я пытаюсь получить метод обновления для программы, которую я написал, и хочу захватить вывод самого git. Я просто не знаю, можно ли записать вывод в файл или нет. – User9123