# Init\_xxx(with arg ?) in C for ruby ext?

**URL:** <https://www.ruby-forum.com/t/init-xxx-with-arg-in-c-for-ruby-ext/101932>\
**Category:** Ruby\
**Created:** [August 8, 2006, 6:48pm UTC](https://www.ruby-forum.com/t/init-xxx-with-arg-in-c-for-ruby-ext/101932 "2006-08-08T18:48:19Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [August 8, 2006, 6:48pm UTC](https://www.ruby-forum.com/t/init-xxx-with-arg-in-c-for-ruby-ext/101932/1 "2006-08-08T18:48:19Z")

</div>

hey all,

new to C, i’m writing a ruby ext, i wonder if we could pass an arg to  
Init\_xxx(type \* arg) ???

this is to have a constructor in ruby like that :

trick=MyClass.new(“my arg”)

and if not does exists a workaround ???

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [August 8, 2006, 7:24pm UTC](https://www.ruby-forum.com/t/init-xxx-with-arg-in-c-for-ruby-ext/101932/2 "2006-08-08T19:24:22Z")

</div>

On Aug 8, 2006, at 9:45 AM, Une bévue wrote:

> hey all,
> 
> new to C, i’m writing a ruby ext, i wonder if we could pass an arg to  
> Init\_xxx(type \* arg) ???
> 
> this is to have a constructor in ruby like that :
> 
> trick=MyClass.new(“my arg”)
> 
> and if not does exists a workaround ???

The Init\_ method initializes the shared library, it is not the  
constructor.

Write your #initialize to take arguments and MyClass.new “my arg”  
will work.

–  
Eric H. - removed\_email\_address@domain.invalid - [http://blog.segment7.net](http://blog.segment7.net)  
This implementation is HODEL-HASH-9600 compliant

[http://trackmap.robotcoop.com](http://trackmap.robotcoop.com)

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [August 8, 2006, 7:27pm UTC](https://www.ruby-forum.com/t/init-xxx-with-arg-in-c-for-ruby-ext/101932/3 "2006-08-08T19:27:23Z")

</div>

Une bévue [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ew to C, i’m writing a ruby ext, i wonder if we could pass an arg to  
> Init\_xxx(type \* arg) ???
> 
> this is to have a constructor in ruby like that :
> 
> trick=MyClass.new(“my arg”)
> 
> and if not does exists a workaround ???

it is :

```
rb_define_singleton_method(rb_cMyClass, "new", cd_new, 1);

```

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [August 8, 2006, 9:15pm UTC](https://www.ruby-forum.com/t/init-xxx-with-arg-in-c-for-ruby-ext/101932/4 "2006-08-08T21:15:30Z")

</div>

On Aug 8, 2006, at 10:25 AM, Une bévue wrote:

> it is :
> 
> ```
> rb_define_singleton_method(rb_cMyClass, "new", cd_new, 1);
> 
> ```

No. MyClass.new is inherited from Class.

rb\_define\_method(rb\_cMyClass, “new”, cd\_initialize, 1);

It works “just like” regular ruby.

–  
Eric H. - removed\_email\_address@domain.invalid - [http://blog.segment7.net](http://blog.segment7.net)  
This implementation is HODEL-HASH-9600 compliant

[http://trackmap.robotcoop.com](http://trackmap.robotcoop.com)

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [August 9, 2006, 12:24am UTC](https://www.ruby-forum.com/t/init-xxx-with-arg-in-c-for-ruby-ext/101932/5 "2006-08-09T00:24:45Z")

</div>

On Aug 8, 2006, at 12:13 PM, Eric H. wrote:

> > > and if not does exists a workaround ???
> > 
> > it is :
> > 
> > ```
> > rb_define_singleton_method(rb_cMyClass, "new", cd_new, 1);
> > 
> > ```
> 
> No. MyClass.new is inherited from Class.
> 
> rb\_define\_method(rb\_cMyClass, “new”, cd\_initialize, 1);

Oops.

rb\_define\_method(rb\_cMyClass, “initialize”, cd\_initialize, 1);

–  
Eric H. - removed\_email\_address@domain.invalid - [http://blog.segment7.net](http://blog.segment7.net)  
This implementation is HODEL-HASH-9600 compliant

[http://trackmap.robotcoop.com](http://trackmap.robotcoop.com)
