# RubyCocoa - selectors for Ruby classes

**URL:** <https://www.ruby-forum.com/t/rubycocoa-selectors-for-ruby-classes/74798>\
**Category:** Ruby\
**Created:** [November 7, 2006, 10:56am UTC](https://www.ruby-forum.com/t/rubycocoa-selectors-for-ruby-classes/74798 "2006-11-07T10:56:52Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ihaveguts](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/f05b48/32.png) [@ihaveguts](https://www.ruby-forum.com/u/ihaveguts)\
**Post date:** [November 7, 2006, 10:56am UTC](https://www.ruby-forum.com/t/rubycocoa-selectors-for-ruby-classes/74798/1 "2006-11-07T10:56:52Z")

</div>

Hello.  
I’m using the RubyCocoa framework (well, trying to), freshly compiled  
today (oops, yesterday) from the svn stable repository.

I want my application controller to get asynchronous notifications  
when a file descriptor has new data to be read, so I decided to use  
OS X infrastructure.  
Here is the interesting part of the code:

class Controller \< OSX::NSObject  
addRubyMethod\_withType(‘dataAvailable:’, ‘v@:@’)  
def dataAvailable(obj)  
# do something  
end  
def setup\_notification\_observer

OSX::NSNotificationCenter.defaultCenter.addObserver\_selector\_name\_object  
(  
self,  
‘dataAvailable:’,  
“NSFileHandleDataAvailableNotification”,  
@fileHandle  
)  
end  
def setup\_data\_available\_notification  
@fileHandle.waitForDataInBackgroundAndNotify  
end  
…  
end

Of course setup\_data\_available\_notification and  
setup\_notification\_observer are called by awakeFromNib.

Everything should be right, but when the default center tries to send  
my Controller a message I get logged:

2006-11-03 00:46:37.262 Fango[19411] Exception raised during posting  
of notification. Ignored. exception: \*\*\* -[NSProxy  
forwardInvocation:] called!

It looks like it can find the method signature (provided by  
addRubyMethod\_withType), but the forwardInvocation: method of the  
Objective-C wrapper to my ruby Controller class doesn’t actually call  
my ruby method. In fact, this makes me suppose forwardInvocation:  
isn’t overrided at all and the message is catched by the parent class  
which raises an exception, but I haven’t read RubyCocoa source code  
so I can’t be sure.

I followed closely what’s written here: [http://www.rubycocoa.com/](http://www.rubycocoa.com/)  
appleremote/2 . I double checked Apple documentation of  
NSNotificationCenter, NSFileHandle.  
I also searched on google for other documentation about selectors and  
RubyCocoa, but all I could get was code with japanese comments which  
didn’t use addRubyMethod\_withType at all. I guess that code was for  
another version of RubyCocoa (newer, maybe? From the unstable  
repository?).

This is what I tried:

- removing addRubyMethod\_withType
- adding ns\_override
- using :dataAvailable\_, :dataAvailable, ‘dataAvailable’ instead of  
‘dataAvailable:’
- defining the method dataAvailable\_ instead of dataAvailable
- something else I can’t remember 😛  
Most of which I didn’t expect to actually work, but decided to try  
anyway. Some bugs just make you paranoid.

I’m using Mac OS X 10.4.8 (PPC), XCode 2.4.

Any ideas? 🙂  
Thanks in advance!

---

<div class="post-metadata">

**Author:** ![ihaveguts](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/f05b48/32.png) [@ihaveguts](https://www.ruby-forum.com/u/ihaveguts)\
**Post date:** [January 24, 2007, 3:06pm UTC](https://www.ruby-forum.com/t/rubycocoa-selectors-for-ruby-classes/74798/2 "2007-01-24T15:06:51Z")

</div>

> I also searched on google for other documentation about selectors and  
> RubyCocoa, but all I could get was code with japanese comments which  
> didn’t use addRubyMethod\_withType at all. I guess that code was for  
> another version of RubyCocoa (newer, maybe? From the unstable  
> repository?).
> 
> Any ideas? 🙂

Hi,

I don’t know anything about RubyCocoa but I happened to see these  
links in the Japanese mailing list.  
They are in English.

Hope it helps.

[http://rubycocoa.sourceforge.net/](http://rubycocoa.sourceforge.net/)  
[http://rubycocoa.sourceforge.net/doc/](http://rubycocoa.sourceforge.net/doc/)  
[http://rubycocoa.sourceforge.net/doc/unstable/](http://rubycocoa.sourceforge.net/doc/unstable/)

Harry
