[ruby-list:48624] Re: loggerメソッドのサブメソッド内での名前空間指定

From: MIWA Yoshiko <waruiko.miwa@...>
Date: 2012-02-14 12:45:01 UTC
List: ruby-list #48624
三輪です。

Tsuji様ご指摘のとおりの対処で解決しました。
グローバル変数として「$log」と宣言し、プログラム内では「$log」として参照すると、

D, [2012-02-14T21:40:36.461517 #745] DEBUG -- : debug
Hello
D, [2012-02-14T21:40:36.462038 #745] DEBUG -- : inside method1

のように、所期の動作をさせることができました。

同じことで躓いた方が本スレッドを参照された場合に備え、解決したコード例全文を掲載しておきます。

(ここから)
   1 require 'logger'
      2 $log = Logger.new(STDOUT)
      3 $log.level = Logger::DEBUG
      4
      5 $log.debug("debug")
      6
      7
      8 def method1
      9
     10         print("Hello\n")
     11         $log.debug("inside method1")
     12
     13 end
     14
     15
     16 method1

(ここまで)

ありがとうございました。

2012年2月14日21:11 Kei Tsuji <ktsujister@gmail.com>:
> From: MIWA Yoshiko <waruiko.miwa@gmail.com>
> Subject: [ruby-list:48621] loggerメソッドのサブメソッド内での名前空間指定
> Date: Tue, 14 Feb 2012 20:38:56 +0900
>
>> というエラーが出ます。
>> エラーになる理由と、解決方法を教えていただけないでしょうか。
>> よろしくお願いいたします。
>
> スコープの問題です。
> http://www.namaraii.com/rubytips/?%CA%D1%BF%F4%A4%C8%A5%B9%A5%B3%A1%BC%A5%D7
>
> $log = Logger.new(STDOUT)
> として宣言して、
> $log.debug("inside method1")
> として使用すれば解決します。
>
> --
> ktsuji



-- 
Yoshiko Miwa waruiko.miwa@gmail.com

In This Thread

Prev Next