Hi Frank,
Sorry for the late response. It seems to work here. Following is a
small test that loads a class from a Ruby file, calls +new on it, then
changes the code, re-loads it again.
Could you try to reduce your problem to a small test like this one and
let us know?
Thanks,
Laurent
$ pwd
/tmp/test
$ cat t.m
#import <Foundation/Foundation.h>
#import <MacRuby/MacRuby.h>
int main(void)
{
MacRuby *runtime = [MacRuby sharedRuntime];
[@"class Foo; def initialize; p 123; end; end" writeToFile:@"/tmp/
test/test.rb" atomically:YES encoding:NSUTF8StringEncoding error:nil];
[runtime evaluateString:[NSString stringWithFormat:@"load \"/tmp/
test/test.rb\""]];
[NSClassFromString(@"Foo") new];
[@"class Foo; def initialize; p 456; end; end" writeToFile:@"/tmp/
test/test.rb" atomically:YES encoding:NSUTF8StringEncoding error:nil];
[runtime evaluateString:[NSString stringWithFormat:@"load \"/tmp/
test/test.rb\""]];
[NSClassFromString(@"Foo") new];
return 0;
}
$ gcc t.m -o t -fobjc-gc -framework MacRuby -framework Foundation
$ ./t
123
456
On Nov 12, 2009, at 4:03 PM, Frank Illenberger wrote:
Thanks for your quick answer. But sadly, it does not seem to work.
My application is a regular Objective-C application and uses MacRuby
to load plug-in ruby classes which reside in their own .rb file.
First I implemented the loading like this:
NSString* path = @"/path/to/MyPlugInClass.rb";
[[MacRuby sharedRuntime] evaluateFileAtPath: path]
id plugInInstance = [[NSClassFromString(@"MyPlugInClass") alloc]
init];
This is working fine when the class is loaded for the first time.
Reloading the class while the app keeps running after the .rb has
been edited however does not refresh the class.
Then I tried to use the "load" command as you suggested:
NSString* path = @"/path/to/MyPlugInClass.rb";
NSString* command = [NSString stringWithFormat:@"load '%@'", path];
[[MacRuby sharedRuntime] evaluateString: command]
id plugInInstance = [[NSClassFromString(@"MyPlugInClass") alloc]
init];
But it shows the same behavior as the first case.
Am I doing something wrong here?
Cheers
Frank
Am 12.11.2009 um 20:40 schrieb Matt Aimonetti:
This is the right place to ask this kind of questions and welcome
to the list :)
What kind of file are you loading? If you are reloading a ruby, you
might want to try to use load instead of require.
http://www.fromjavatoruby.com/2008/10/require-vs-load.html
- Matt
On Thu, Nov 12, 2009 at 11:11 AM, Frank Illenberger <illenber...@mac.com
> wrote:
Hello folks,
please excuse me if this is not the right mailing list to post this
question:
I am currently porting an application from PyObjC to MacRuby. Under
PyObjC it is possible to reload a .py file containing a class
definition at runtime. -[MacRuby evaluateFileAtPath:] works fine
for me loading a class for the first time. But after is loaded, it
is not updated when called again. Does anybody know if there is a
way to make this work with MacRuby?
Thanks and cheers
Frank
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel