Adding MonitorMixin causes compile failure when initialize takes a parameter

Hi, I am a relative newbie in Ruby and I need to do some simple thread
based programs.
In the new pickaxe book I saw this code for enabling a synchronized
block using a MonitorMixin

require 'monitor'

class Counter
  include MonitorMixin
  attr_reader :count
  def initialize
    @count = 0
    super
  end
  def tick
    synchronize do
      @count += 1
    end
    puts @count
  end
end

c = Counter.new
t1 = Thread.new{10000.times {c.tick} }
t2 = Thread.new{10000.times {c.tick} }
t1.join; t2.join

This works fine, except that in my application the class takes a
parameter, so I added a parameter to the new call and a parameter to
the initialize method as below,

require 'monitor'

class Counter
  include MonitorMixin
  attr_reader :count
  def initialize(init_param)
    @count = init_param
    super
  end
  def tick
    synchronize do
      @count += 1
    end
    puts @count
  end
end

c = Counter.new(2)
t1 = Thread.new{10000.times {c.tick} }
t2 = Thread.new{10000.times {c.tick} }
t1.join; t2.join

And when I do it fails to compile with the following error.
`initialize': wrong number of arguments (1 for 0) (ArgumentError)

What am I doing wrong?

Thanks for you r help with this

Scott

Write it like this

  def initialize(init_param)
    @count = init_param
    super

                super() # call super without argument

  end

Guy Decoux

^^^^^
                      ^^^^^
                   this implies super(*anyargs, &anyblock)

to call with zero args use 'super()'

-a

···

On Fri, 11 Aug 2006, Scott wrote:

Hi, I am a relative newbie in Ruby and I need to do some simple thread
based programs.
In the new pickaxe book I saw this code for enabling a synchronized
block using a MonitorMixin

require 'monitor'

class Counter
  include MonitorMixin
  attr_reader :count
  def initialize
    @count = 0
    super

--
to foster inner awareness, introspection, and reasoning is more efficient than
meditation and prayer.
- h.h. the 14th dali lama