2016-08-14 1 views
0

Я пытаюсь добавить регистратор в мое рубиновое приложение. Способ, которым я настроен в данный момент, записывается в метод инициализации моего класса. Затем я пытаюсь получить доступ к нему из других методов в том же классе, но я получаю ошибку области действия, а именно:Как получить доступ к журналу с другими методами в пределах одного класса?

undefined local variable or method "logger" (NameError) 

Это относится к моему первому вызову метода регистратора. Как получить доступ к моему ранее созданному регистратору из других методов?

Вот полный код:

gist

ответ

2

это не должен быть переменным экземпляр? Попробуйте изменить регистратор на @logger, чтобы он был доступен через экземпляр класса.

+0

Спасибо! Это было частью проблемы, но не решило ее полностью. Все это должно быть в своем классе. – LMCMLJ

+0

Я рад, что это помогло. Если вы хотите, чтобы переменная регистратора оставалась статической для всех экземпляров класса, вы можете определить ее как @@ logger – MichaelHCameron

1

Я решил свой собственный вопрос после поиска вокруг еще. Для тех, кто с подобным вопросом, лучший способ, чтобы добавить регистратор находится в его собственном классе, структурирована следующим образом:

class Log 
    def self.log 
     if @logger.nil? 
      # CREATE LOGGER HERE 
     end 
     @logger 
    end 
end 
1

Вы можете сделать это тоже: @logger || = Logger.new ('лог-файлов. log ')

Это || = совпадает с вашим оператором if, создающим только эту переменную, если она равна нулю.

+0

Отлично! Еще более кратким! – LMCMLJ