Можно ли использовать методы, определенные в уточнениях в представлениях Синатры?
У меня есть класс, определенный в геме, к которому я добавляю некоторые методы с помощью доработок (в Ruby 2.3.0). Этот класс встречается в некоторых представлениях Синатры (хамл).
Когда я обращаюсь к этим дополнительным методам в помощнике, это не проблема. Но в представлении я получаю ошибку неопределенного метода.
Я пропускаю трюк, или это using ...
заявление должно пойти куда-нибудь, я просто не могу добраться?
(Временное решение: я могу определить вспомогательные методы для возврата метода на объект. Но если бы я хотел сделать это, я бы не использовал уточнения...)
1 ответ
Объем уточнения определяется лексически. Если вы не перепишите метод внутри haml, который вызывает этот метод, чтобы он стал в рамках using
команда, вы не можете использовать уточнения. Но я думаю, что хамл внутренне использует eval
или что-то в этом роде, чтобы оценить код, который вы пишете в файле haml. В таком случае это невозможно.