# Adding MonitorMixin causes compile failure when initialize t

**URL:** <https://www.ruby-forum.com/t/adding-monitormixin-causes-compile-failure-when-initialize-t/64666>\
**Category:** Ruby\
**Created:** [August 15, 2006, 2:13pm UTC](https://www.ruby-forum.com/t/adding-monitormixin-causes-compile-failure-when-initialize-t/64666 "2006-08-15T14:13:40Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![scott](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3e96dc/32.png) [@scott](https://www.ruby-forum.com/u/scott)\
**Post date:** [August 15, 2006, 2:13pm UTC](https://www.ruby-forum.com/t/adding-monitormixin-causes-compile-failure-when-initialize-t/64666/1 "2006-08-15T14:13:40Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![scott](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3e96dc/32.png) [@scott](https://www.ruby-forum.com/u/scott)\
**Post date:** [August 15, 2006, 2:13pm UTC](https://www.ruby-forum.com/t/adding-monitormixin-causes-compile-failure-when-initialize-t/64666/2 "2006-08-15T14:13:48Z")

</div>

> > > > > “S” == Scott [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

Write it like this

S\> def initialize(init\_param)  
S\> @count = init\_param  
S\> super

```
            super() # call super without argument

```

S\> end

Guy Decoux

---

<div class="post-metadata">

**Author:** ![scott](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/3e96dc/32.png) [@scott](https://www.ruby-forum.com/u/scott)\
**Post date:** [August 15, 2006, 2:13pm UTC](https://www.ruby-forum.com/t/adding-monitormixin-causes-compile-failure-when-initialize-t/64666/3 "2006-08-15T14:13:49Z")

</div>

On Fri, 11 Aug 2006, Scott wrote:

> def initialize  
> @count = 0  
> super  
> ^^^^^  
> ^^^^^  
> this implies super(\*anyargs, &anyblock)

to call with zero args use ‘super()’

-a
