Pull to refresh

Comments 4

Autoloading в рельсах давно уже признан злом, которое убивает тебя раз за разом.


Смотрите в сторону метода require_dependency и читайте толковый официальный гайд Autoloading and Reloading Constants, раз за разом, раз за разом.

Ну отключить то можно автолоад, и зла не будет :) Но его отсутствие в приложениях гораздо заметнее, чем в библиотеках, например. По-моему, если понять его тонкости, то он становится очень удобным.


В дополнение к вашему совету.


У меня основное правило — лучше его использовать для top-level констант, а для вложенных добавить require_dependency. Я пользуюсь этим модулем вместо многочисленных require_dependency. Помогает и с STI моделями, когда нужно жадно подгрузить вложенные классы.


Хорошая статья о том, почему автолоад работает именно так.

Комментарий из статьи:


The thing is: dependencies.rb does not pretend to emulate constant resolution algorithms. It cannot because Ruby does not pass key information, so it does not attempt to.

dependencies.rb has to be seen in a positive way: it is a feature that has a contract, if you follow the contract, the feature works.

Спасибо за ссылку на прекрасную статью — очень доходчиво объясняет.

Sign up to leave a comment.

Articles