Переменные экземпляра Ruby из внешнего файла

#ruby-on-rails #ruby #ruby-on-rails-3

#ruby-on-rails #ruby #ruby-on-rails-3

Вопрос:

У меня много повторяющихся флэш-уведомлений по всему моему приложению rails 3, и в конечном итоге я снова и снова набираю одни и те же строки. Кроме того, я хочу удалить длинные строки для флэш-уведомлений за пределами контроллеров.

Я пытался поместить их во внешний файл, но я не могу получить доступ к переменным экземпляра…

Я разместил код здесь:http://pastebin.mozilla.org/1201689

У кого-нибудь есть какие-нибудь идеи?

Действительно ценю любую помощь 🙂

Ответ №1:

Подобные задачи разработаны для i18n (интернационализация). Взгляните на раздел 3 в http://guides.rubyonrails.org/i18n.html Для их хранения используется файл, но вы можете изменить его в зависимости от языка. Это демонстрирует именно то, что вы ищете. Даже если вы используете только 1 язык, это удалит дублирующийся код для часто используемых строк.

Другой вариант — создать модуль в папке вашего приложения / библиотеки, который определяет ваши константы.

 module FlashNoticeConstants
    MY_COMMONLY_USED_FIRST = "test"
    MY_COMMONLY_USED_SECOND = "test2"
end
  

Комментарии:

1. Спасибо за ответ, Газлер. Есть ли какая-либо альтернатива библиотеке i18n, может быть, это немного излишне для того, что я пытаюсь сделать …???

2. Я действительно не думаю, что это перебор. Здесь хранятся все нужные вам строки в файле, как вы и просили. Вы могли бы сделать это вручную, но ваш результат в конечном итоге был бы очень похож на решение i18n.

3. Хорошо, я просматривал библиотеку INTL, и кажется, что это, вероятно, сработает. Спасибо за предупреждение. Я также рассмотрю модули, действительно хотел сделать это только с классами ruby.

4. Действительно ценю предупреждение Глейзера… IYO было бы лучшим способом вернуть переменные из внешних файлов обратно в основные контроллеры, если бы модули избегали использования библиотеки INTL lib? Спасибо 🙂

5. В случае отказа от решения i18n я бы выбрал модульный подход.