Hello Victor,

I see that there is not much action on the list at the moment - so I will reply - the heavyweights do eventually drop by - but they are very busy so it is a bit sporadic (unless its just my gmail playing up again).

I haven't actually tried 2 and 3 on your list since I am trying to obviate the need to actually write anything in Objective C. I guess if you have Obj C code already then you might want to call ruby rather than the other way around, so I will leave those questions for others and answer the simple one.

For number 1:
If you are using Xcode it all seems to work magically, and I am not sure why you are having problems.

If I want to call some Obj C code from a ruby class - i first create an obj c class (eg MyClass) the normal way in Xcode (with .m and .h classes becoming part of the project), write the obj c code, and then any ruby code can magically use that class - eg with:

MyClass.my_class_method 

or 

a = MyClass.new
a.my_instance_method

or
a =MyClass.init.alloc
a.my_instance_method

if you want to access state in the obj c class - there was a thread on that recently (subject Accessing Obj-C InstVars from Ruby- but I use getters and setters in the Obj C code.

Hope that helps,
John


On Apr 16, 2009, at 13:23 , macruby-devel@principia.info wrote:

Hi,

 I'm new both to this list and to MacRuby. Let this message serve as an introduction.

 I have some questions that have not seen answered either in the docs or in the list archives. I have been known to miss things before, so please kindly point  me in the right direction if this is documented somewhere.

I have seen the embedding sample but I stil can't figure out how I can pull out the following:

1. Mix Obj-C and Ruby Classes: ie, from Ruby be able to extend or use Obj-C classes that are lying around in my project. How do I "require" them? When I try to use them, ruby doesn't seem to recognize them (specifically, it recognizes the classes but not their methods)
2. The same question, but the other way around: how can I use or extend a class declared in Ruby from Obj-C? The only thing that I can come up with is to declare them with @class, but it didn't work (or I didn't do it properly)
3. If I were to call arbitrary scripts as in the embedding sample, how can I pre-initialize ruby objects so that they are available in the environment? I.e, if I allow the user to extend my app by running their ruby code, how can I make my objects available to him? And also, how could I prevent certain objects from being available to him, so that he doesn't break anything?


TIA,

victor _______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel