У меня есть рецепт Chef с ruby_block, содержащим это:
myoutput = `keytool -import -alias #{al} -keystore #{ks} -storepass #{pw} -file #{ca} -trustcacerts -noprompt`
puts ":" + myoutput + ":"
Chef::Log.error('Error installing CA Cert') unless myoutput.include? "Certificate was added to keystore"
(Все переменные установлены правильно.) Вот соответствующий вывод:
Certificate was added to keystore
::
[2013-07-03T21:26:41-07:00] ERROR: Error installing CA Cert
Обратите внимание на ::. Почему мой вывод не установлен правильно? Когда я запускаю эту команду вручную, я получаю ожидаемый результат. Команда в обратных кавычках делает то, что должна, поэтому я знаю, что она работает, но по какой-то причине стандартный вывод команды не назначается моему выходу, и я не могу понять, почему. Любые идеи? Спасибо -- Дэйв
Изменить: причина в том, что вывод этого конкретного вызова «keytool» будет stderr, а не stdout.