У меня есть довольно старая система шаблонов, написанная поверх ERB. Он опирается на шаблоны ERB, хранящиеся в базе данных. Те читаются и визуализируются. Когда я хочу передавать данные из одного шаблона в другой, я использую параметр locals для метода рендеринга Rails. Для установки переменных по умолчанию этих переменных в некоторых шаблонах я использую определенные? метод, который просто говорит мне, была ли определена локальная переменная, и если я не инициализирую ее значением по умолчанию следующим образом:
unless defined?(perex)
perex = true
end
Я обновляю приложение до последних Rails, и я вижу какое-то странное поведение. В основном это иногда работает (иногда perex undefined), а иногда нет (perex определяется и устанавливается на nil). Это происходит без изменений.
У меня есть два вопроса: Есть ли лучший способ, кроме использования определенных? которая оказалась ненадежной (была надежной в течение нескольких лет на вершине Rails 1.6)? Такой способ не должен приводить к тому, что я переписываю все шаблоны. Я проходил через Ruby docs и не мог найти что-либо о определенных? метод. Было ли это устаревшим или я просто слепой?
Изменить: фактическая проблема была вызвана тем, что кажется ошибкой Ruby/eRB. Иногда инструкция if будет работать, но иногда нет. Странно то, что даже если бы вторая линия была исполнена, perex stil остался ноль остальному миру. Удаление определено? разрешил это.