2010-07-08 5 views
0

У меня есть небольшое раздражение с плагином javascript_I18n, который генерирует js-friendly версии таблиц перевода I18n, так что вы можете локализовать свой javascript. Все работает отлично, но это работает, вызывая to_json на каждом хеше трансляции locale и выводит результаты в файл. Когда вы вызываете to_json на хэш, результирующая строка - это всего одна строка, а это значит, что вы заканчиваете с файлами с огромной линией в конце.Rails: Hash # to_json - разделен на несколько строк?

Это, в свою очередь, останавливает git от возможности слияния любых изменений, потому что слияние работает по принципу линейной линии и не может иметь дело с одной массивной линией с изменениями в середине где-то. Это не серьезная проблема, потому что я всегда могу просто сгенерировать js-friendly файл перевода с помощью команды rake, которая поставляется с плагином (который заменяет файл среднего уровня с новым, который я могу просто зафиксировать), но это немного раздражает. Мне пришло в голову, что если json выводится на разных строках, а не на одну строку, то это не будет проблемой, и это даже не сделает файл намного большим, просто вставив два символа (\ n) в строке.

Прежде чем я попытаюсь взломать результирующую строку с помощью gsub, чтобы разделить ее на отдельные строки, есть ли лучший способ вызвать to_json на хеш-странице и выводить результаты на отдельные строки? Или лучше всего решить эту проблему? (я не могу найти много полезного в документации для javascript_I18n).

Благодарен за любые советы - макс

ответ

0

не ответить вам вопрос, но дать предложение:

Это, вероятно, будет проще просто игнорировать все сгенерированные JS файлы перевода.

Это потому, что даже если вы разделите перевод на несколько строк, все еще есть шансы на конфликты слияния, которые вы, вероятно, уже разрешили один раз в вашем файле yaml.

Я бы поставил его так:

1). gitignore все файлы перевода js.

2). В ActionController добавьте фильтр перед созданием файлов js автоматически при каждой загрузке только в режиме разработки.

3). Измените файл deploy.rb, чтобы сгенерировать файлы js после обновления кода.

Больше никаких конфликтов слияния! (по крайней мере, для файлов перевода js): D

Aaron Qian