2016-08-14 9 views
0

Rubyアプリケーションにロガーを追加しようとしています。私はそれを今のところセットアップしている方法で、ロガーは私のクラスの初期化メソッドで作成されます。具体的には、私は、同じクラス内の他のメソッドからアクセスしようとするが、私はスコープのエラーを取得:これはロガー法への私の最初の呼び出しを指し同じクラス内の他のメソッドからどのようにロガーにアクセスする必要がありますか?

undefined local variable or method "logger" (NameError) 

。以前に作成したロガーに他の方法でアクセスするにはどうすればよいですか?ここで

は完全なコードです:

gist

答えて

2

それはインスタンス変数ではないでしょうか?ロガーを@loggerに変更して、クラスインスタンス全体でアクセスできるようにしてください。

+0

ありがとうございました!これは問題の一部でしたが、完全に解決しませんでした。すべてがそれ自身のクラスである必要があります。 – LMCMLJ

+0

私はそれが助けてうれしいです。ロガー変数をクラスのすべてのインスタンスに静的にしたい場合は、@@ロガーとして定義することができます – MichaelHCameron

1

もう少し調べてみると、自分の問題を解決しました。同様の問題と誰にも、ロガーを追加するための最良の方法は、このような構造に、それ自身のクラスである: @logger || = Logger.new( 'ログファイル:あなたはこのあまりにも行うことができます

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

。 log |)

That || = if文は、変数がnilの場合のみ作成するif文と同じです。

+0

素晴らしい!さらに簡潔に! – LMCMLJ

関連する問題