From: Hidetoshi NAGAI Date: 2004-05-06T13:41:07+09:00 Subject: Re: $SAFE = 3.5? Hi, From: Tim Bates Subject: Re: $SAFE = 3.5? Date: Tue, 4 May 2004 07:58:42 +0900 Message-ID: <4096CE96.7000702@bates.id.au> > class Safe > def level(lvl) > th = Thread.new do > $SAFE = lvl.to_i > yield > end > th.join > end > end A proc object can be used as a safe-level wrapper. Please try the following script. =============================================================== ################### # sample part 1 ################### class Safe def self.level(lvl) proc{$SAFE=lvl.to_i; yield}.call end end p $SAFE p Safe.level(2){puts '----';p $SAFE; puts '-----'; $SAFE} p $SAFE puts '=========================' ################### # sample part 2 ################### fp = open('hoge', 'w') wp = proc{|s| p $SAFE; fp.print(s)} puts '=========================' $SAFE = 4 wp.call("hoge hoge\n") fp.print("fuge fuge\n") =============================================================== -- Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)