У меня есть два приложения Rails 2.3, мы будем называть их admin и frontend . В admin все мои модели указаны в app/models
. В frontend у меня есть эти модели с символическими ссылками. Я хотел бы добавить внешний интерфейс специальные методы в модель, которая отображается только для приложения внешний интерфейс , но не для приложения admin .
Сначала я попытался просто добавить config.autoload_paths += "#{RAILS_ROOT}/app/augments/address.rb"
с помощью:
class Address
def hello
"hello world"
end
end
Но это просто не было загружено. Звонки на номер Address.first.hello
будут отвечать undefined method 'hello'
.
Если мне нужен файл, который делает это:
Address.class_eval do
def hello
"hello world"
end
end
Он загружается один раз, и для первого попадания в разработке он работает, но при всех последующих перезагрузках происходит сбой. Это связано с config.cache_classes = false
в разработке.
Полуработающее решение - запустить его из ApplicationController:
class ApplicationController < ActionController::Base
Address.class_eval do
def hello
"hello world"
end
end
end
, который перезагружается и работает каждый раз в dev andprod, но не работает для скрипта / бегуна или скрипта / консоли. (Если это единственное решение, я уверен, что мы могли бы извлечь это из модуля и include ModelExtensions
в ApplicationController.)
Что я могу добавить в файл environment.rb или инициализатор, который будет перезагружаться каждый раз при разработке?