Я хочу иметь отдельные журналы для своего приложения. Я создал следующий модуль:Установить переменную класса из модуля
module MyApp
module MyLog
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def logger
@@logger ||= Logger.new("#{Rails.root}/log/#{self.name.underscore}.log")
end
end
end
end
Тогда в любой из моих моделей, я могу добавить:
include MyApp::MyLog
и использовать его в качестве (лог-файл появится в .../log/cat.log
):
Cat.logger.info 'test'
Я попытался использовать этот метод included
на моделях Cat
и Dog
, и у меня есть такой результат:
Cat.new.logger
# => #<Logger:0x007fe4516cf0b0 @progname=nil, ... @dev=#<File:/.../log/cat.log>, ...
Dog.new.logger
# => #<Logger:0x007fe4516cf0b0 @progname=nil, ... @dev=#<File:/.../log/cat.log>, ... (the same)
Если я пытаюсь использовать мой регистратор для Dog
модели первых, у меня будет лог-файл с именем dog
(/dog.log
).
Как установить переменную класса @@logger
из модуля для каждого класса с правильным инициализированным регистратором?