Рассмотрим
# coding: utf-8
vs = '— - ’ “ †prince'
vs.gsub!('—', '—')
.gsub!(' - ', ' — ')
.gsub!('’', '’')
.gsub!('“', '“')
.gsub!('â€', '”')
.gsub!('prince', 'king')
puts vs
, который печатает — — ’ “ ” king
Удар в конце gsub!
указывает, что он работает на месте.Обратите внимание, что #gsub!
не совпадает с #gsub
, который не изменяется на месте.
Вы можете выполнить эту операцию непосредственно на vs.text
, так какуже строка и пропустите всю вещь cleansed_text
целиком.
Из всего сказанного я могу думать только о двух причинах, по которым ваш пример не работает:
- Ваши измененияне сохраняются, потому что не удается сохранить, и
- Ваш класс
Poem
не имеет метода text
, который представляет столбец text
в вашей таблице poems
через ActiveRecord
.
Хотя я понимаю, что ваши изменения в настоящее время не сохраняются, обычно считается хорошей идеей сделать ваши миграции обратимыми в методе down
, когда это возможно.
Если вы или кто-либо в вашей команде используете текстовый редактор Windows, убедитесь, что в вашей миграции нет метки порядка байтов , на всякий случай.
, посколькуВы упомянули 1.8, прочитайте о как делазавис в в 1.9.
И поскольку это выглядит как преобразование кодировки, если вы знаете старую кодировку, почему бы вам не использовать String#encode
?