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.
Спасибо за ссылку на прекрасную статью — очень доходчиво объясняет.
Чем плохи вложенные классы и как познавать rails magic