Похоже, ответ можно найти здесь: http://handyrailstips.com/tips/4-loading-observers-automatically-from-their-own-folder.
Содержимое Скопировано с web.archive.org, заархивировано 2009-05-25 19: 36: 17
Автоматическая загрузка наблюдателей из собственной папки
Гэвин
Наблюдатели - отличный способ очистить и высушить ваши модели. Я использую их довольно часто, чтобы иметь дело с отправкой почты, регистрацией сообщений и всем остальным, что не является строго обязанностью модели.
Одна вещь, которая меня беспокоила, так как я обнаружил наблюдателей, это то, что они не вызываются по умолчанию. Вместо этого вы должны явно указать, какие наблюдатели должны быть загружены (обычно в environment.rb)
Если вы планируете загружать всех своих наблюдателей из среды, когда ваше приложение загружается (что вполне вероятно), вы можете добавить в файл environment.rb следующее, чтобы автоматически загружать их все при запуске приложения:
# config/environment.rb
Dir.chdir("#{Rails.root}/app/models") do
config.active_record.observers = Dir["*_observer.rb"].collect {|ob_name| ob_name.split(".").first}
end
Это выглядит немного грязно, но все, что вы здесь делаете, это просто находите имена всех файлов наблюдателей в папке моделей и настраиваете ваше приложение для загрузки каждого из них с помощью
config.active_record.observers =
Еще одна вещь, которая мешает наблюдателям, это то, что они хранятся в папке моделей по умолчанию. Если вы создаете большое приложение с несколькими моделями и несколькими наблюдателями, это может стать довольно загроможденным и запутанным.
Чтобы обойти это, я обычно создаю новую папку в приложении / называемую «наблюдателями». Затем я перемещаю всех созданных мной наблюдателей в эту папку.
Чтобы убедиться, что эта папка загружается при запуске, я добавляю следующее в environment.rb
config.load_paths += "#{Rails.root}/app/observers"
Simple!
Если вы решите использовать это вместе с предыдущим советом по автоматической загрузке наблюдателей, вам придется изменить имя каталога, в котором вы ищете, с моделей на наблюдателей
# config/environment.rb
Dir.chdir("#{Rails.root}/app/observers") do
config.active_record.observers = Dir["*_observer.rb"].collect {|ob_name| ob_name.split(".").first}
end
Не забудьте перезагрузить приложение после создания нового наблюдателя или внесения каких-либо изменений в среду. Rb