Мне кажется, этот фрагмент кода заменяет недопустимые символы UTF-8 пустыми строками:
title = title.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
Для чего нужен второй аргумент 'binary'?Это необходимо?
'binary'
В соответствии с документацией Ruby для encode 2-й аргумент - это кодировка исходной строки.
Это может быть необязательным полем, поскольку существует 3 формы этого метода:
encode(encoding [, options] ) → str encode(dst_encoding, src_encoding [, options] ) → str encode([options]) → str
Может понадобиться, в зависимости от того, как выглядит исходная строка:
https://stackoverflow.com/a/10466273/2892779