Сделать Rails автозагрузкой классов в библиотеке - PullRequest
0 голосов
/ 17 февраля 2011

Я использую Rails 2.3.5, и в нем, для автозагрузки классов из папки lib, мы просто должны назвать файлы в соответствии с их именами классов

lib/auto_run.rb --> class AutoRun
lib/code_snippets/category_code --> class CodeSnippets::CategoryCode

Это похоже на именование модели Railsкроме с.Здесь я запутался в последнем.Здесь я нигде не определил модуль или другой класс CodeSnippets.Тогда как я могу использовать :: operator?

Также есть ли другие способы структуры папок, чтобы Rails мог автоматически загружать классы без написания дополнительного кода?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

В CodeSnippets::CategoryCode вам не нужно объявлять CodeSnippets, потому что это не более чем пространство имен, это не модуль или класс

Эти классы просто загружаются автоматически, потому что по соглашению все файлыв lib / get автозагрузка, точно так же, как / models и контроллер / папки также автоматически загружаются.

Если вы хотите получить больше папок, загружаемых автоматически, вы должны добавить их в переменную конфигурации load_paths в environment.rbкак это:

  config.load_paths += %W(#{RAILS_ROOT}/app/middleware)
  config.load_paths += %W(#{RAILS_ROOT}/app/observers)
0 голосов
/ 29 октября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...