From: Gregory C. <gr...@in...> - 2008-08-19 00:11:59
|
Hi Steve, You might need a require 'rubygems' before the require 'rexml/ document'. Certainly that's true for Builder. I've used REXML in my latest RubyCocoa projects, along with other gems, and require 'rubygems' is my first line. Hope this helps, Greg > Dear all, > > I'm using RubyCocoa 0.13.2 on OS X 10.5.4 > > I have a problem that is driving me batty. I was originally trying > to use XmlBuilder to write out some XML. However, at seemingly > random places, my application would crash while building the XML and > jump into the debugger, always at objc_msgSend. > > Well, I thought perhaps there might be some strange problem with > XmlBuilder so I decided to try using REXML instead. Well now I get > the problem immediately. The following code works perfectly from the > command line using /usr/bin/ruby which points to /System/Library/ > Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby > > require 'osx/cocoa' > require 'rexml/document' > > doc = REXML::Document.new > node = REXML::Element.new( "node") > doc.add_element node > puts "#{doc.to_s}" > > In fact, there's no particular reason to include 'osx/cocoa' as it > stands because I deleted everything down to the simplest terms. > Originally, I had objects that knew how to write themselves to XML. > > However, if I run the following code as part of an XCode project for > a Cocoa application: > > require 'osx/cocoa' > require 'rexml/document' > > class AppController < OSX::NSObject > include OSX > > # big cut of other methods > > def exportModel > return if @modelAlias.selectedObjects.length < 1 > model = @modelAlias.selectedObjects[ 0] > > # panel = NSSavePanel.savePanel > # return if panel.runModalForDirectory_file( nil, "model.xml") != > NSFileHandlingPanelOKButton > > # filename = NSString.stringWithString panel.filename > > doc = REXML::Document.new > node = REXML::Element.new( "node") > doc.add_element node > NSLog( "#{doc.to_s}") > end > ib_action :exportModel > end > > The application barely runs. It starts up but when I attempt to load > a model into the application, the application crashes and goes > immediately into the debugger (dbg) without any other information > about what might have gone wrong. I assume it crashes on openModels > (and not exportModel) because it is the first time that > AppController is interpreted. > > Here are the first 30 lines from the backtrace: > > #0 0x946ef6e8 in objc_msgSend () > #1 0x0002fab4 in rbobj_to_nsobj () > #2 0x0002d327 in objcptr_s_new_with_cptr () > #3 0x000dc1d8 in rb_eval_string_wrap () > #4 0x000dcdec in rb_eval_string_wrap () > #5 0x000da06d in rb_eval_string_wrap () > #6 0x000db17c in rb_eval_string_wrap () > #7 0x000db1c5 in rb_eval_string_wrap () > #8 0x000dc9de in rb_eval_string_wrap () > #9 0x000e641e in rb_apply () > #10 0x000dc323 in rb_eval_string_wrap () > #11 0x000dcdec in rb_eval_string_wrap () > #12 0x000dd871 in rb_respond_to () > #13 0x000dd95a in rb_funcall () > #14 0x00104a55 in rb_inspect () > #15 0x00035bca in rbobj_call_ruby () > #16 0x00034db6 in install_ovmix_hooks () > #17 0x000331ef in ovmix_register_ruby_method () > #18 0x9030e9aa in ___forwarding___ () > #19 0x9030ea12 in __forwarding_prep_0___ () > #20 0x00033319 in ovmix_register_ruby_method () > #21 0x9584a69b in _NSGetUsingKeyValueGetter () > #22 0x9584a1aa in -[NSObject(NSKeyValueCoding) valueForKey:] () > #23 0x95878192 in -[NSArray(NSKeyValueCoding) valueForKey:] () > #24 0x95877d2a in -[NSObject(NSKeyValueCoding) valueForKeyPath:] () > #25 0x958c3548 in -[NSArray(NSKeyValueCoding) valueForKeyPath:] () > #26 0x95877c90 in -[NSObject(NSKeyValueCoding) valueForKeyPath:] () > #27 0x95118cd4 in -[NSBinder > _valueForKeyPath:ofObject:mode:raisesForNotApplicableKeys:] () > #28 0x951188dc in -[NSBinder > valueForBinding:resolveMarkersToPlaceholders:] () > #29 0x951f2b29 in -[NSSelectionBinder > _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState > :] () > #30 0x9514d950 in -[NSValueBinder > _observeValueForKeyPath:ofObject:context:] () > > Note that it is not enough to comment out the REXML lines, to make > everything run fine. I have to comment out the require 'rexml/ > document' line as well...then everything will run fine....but REXML > is in the Ruby standard library. I can cd to /System/Library/ > Frameworks/Ruby.framework/Versions/Current/usr/lib/ruby/1.8/rexml/ > and see that document.rb is there. > > Any ideas? > > Cheers, > Steve > > > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win > great prizes > Grand prize is a trip for two to an Open Source event anywhere in > the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/_______________________________________________ > Rubycocoa-talk mailing list > Rub...@li... > https://lists.sourceforge.net/lists/listinfo/rubycocoa-talk |