From: gga Date: 2007-04-05T19:40:12+09:00 Subject: Avoiding scope pitfall Here's a simple snippet of code of a ruby scope pitfall (bug?) that I keep stumbling upon. Here a "global" function is invoked in two different contexts and returns different behavior due to self being set differently. --- #!/usr/bin/env ruby @x = 'hello global' def global_func puts "global_func: class:#{self.class} x=#@x" end class A def test_scope global_func end end global_func a = A.new a.test_scope --- I'm wondering if this is intended behavior in the language. If intended, what's the best approach to avoid running into this? I'm currently porting code from other languages with different (more correct to me) scoping, and this keeps tripping me.