Можно ли использовать методы, определенные в уточнениях в представлениях Синатры?

У меня есть класс, определенный в геме, к которому я добавляю некоторые методы с помощью доработок (в Ruby 2.3.0). Этот класс встречается в некоторых представлениях Синатры (хамл).

Когда я обращаюсь к этим дополнительным методам в помощнике, это не проблема. Но в представлении я получаю ошибку неопределенного метода.

Я пропускаю трюк, или это using ... заявление должно пойти куда-нибудь, я просто не могу добраться?

(Временное решение: я могу определить вспомогательные методы для возврата метода на объект. Но если бы я хотел сделать это, я бы не использовал уточнения...)

1 ответ

Решение

Объем уточнения определяется лексически. Если вы не перепишите метод внутри haml, который вызывает этот метод, чтобы он стал в рамках using команда, вы не можете использовать уточнения. Но я думаю, что хамл внутренне использует eval или что-то в этом роде, чтобы оценить код, который вы пишете в файле haml. В таком случае это невозможно.

Другие вопросы по тегам