В Ruby 1.8 Errno::ENOENT
не вызывается выполнением оболочки / обратными галочками - ошибка, которую вы видите, является стандартной ошибкой, напечатанной оболочкой.Если вы хотите обнаружить это, я бы порекомендовал найти код выхода 127:
`lame #{parameters} 2>&1`
if $?.exitstatus == 127
logger.info "command 'lame' not found: ensure LAME is installed"
end
Однако в Ruby 1,9 это повысит Errno::ENOENT
.
Возможно, вы захотите проверитьвывод от which lame
вместо:
lame_installed = system("which lame >/dev/null")
# or even better
lame_available = !(lame_path = `which lame`.strip).empty? && File.executable?(lame_path)
Дополнительная информация: