Это всегда хорошая идея проверить возвращаемое значение system , чтобы определить, было ли оно успешным.
Dir.glob("*.txt") do |file|
system("iconv -f UTF-8 -t 'ASCII//TRANSLIT' #{file} >> ascii_#{file}") or
puts "iconv failed for file #{file}: #{$?}"
end
Вы также можете попробовать использовать стандартную библиотеку Iconv и таким образом избавиться от системного вызова:
require 'iconv'
source_file = 'utf8.txt'
target_file = 'ascii.txt'
File.open(target_file, 'w') do |file|
File.open(source_file).each_line do |line|
file.write Iconv.conv('ASCII//TRANSLIT', 'UTF-8', line)
end
end
с соответствующей проверкой ошибок добавлено.