>>231 Ruby >>236のパクリ
module FizzBuzz
def fizz_buzz(spec)
Thread.current[:fizzbuzz] = [self, ""] if kind_of?(Integer)
state = Thread.current[:fizzbuzz]
state[0] % spec[0] == 0 ?
state[1] += spec[1] :
(state[1].empty? ? state[0] : state[1])
end

def fizz; fizz_buzz([3, "Fizz"]) end
def buzz; fizz_buzz([5, "Buzz"]) end
def gizz; fizz_buzz([7, "Gizz"]) end
end

[Integer, String].each{ |klass| klass.include(FizzBuzz) }

1.fizz.buzz #=> 1
3.fizz.buzz #=> "Fizz"
5.fizz.buzz #=> "Buzz"
15.fizz.buzz #=> "FizzBuzz"
7.fizz.buzz.gizz #=> "Gizz"
21.fizz.buzz.gizz #=> "FizzGizz"
35.fizz.buzz.gizz #=> "BuzzGizz"
105.fizz.buzz.gizz #=> "FizzBuzzGizz"
105.fizz.gizz.buzz #=> "FizzGizzBuzz"
999.fizz.buzz #=> "Fizz"