From: Chris Gehlker Date: 2006-09-18T02:33:16+09:00 Subject: Re: Ruby Tk on Tiger On Sep 17, 2006, at 9:49 AM, Chris Gehlker wrote: > > On Sep 17, 2006, at 6:32 AM, Morton Goldberg wrote: > >> On Sep 16, 2006, at 1:43 PM, Chris Gehlker wrote: >> >>> I'm running ruby 1.8.5 (2006-09-10) [powerpc-darwin8.7.0] and >>> when I try they little simple Tk application on the first page of >>> the Ruby Tk chapter of the Pickaxe Book I get: >>> ~ $ ruby -w TK.rb >>> ./tk.rb:7: uninitialized constant TkRoot (NameError) >>> from TK.rb:6:in `require' >>> from TK.rb:6 >>> >>> However if I run the pre-installed ruby that came with Tiger like: >>> ~ $ /usr/bin/ruby -w TK.rb >>> >>> I get a nice little window with "Hello World!" in it as well as >>> ruby, File and Edit menus. The archives seem to have quite a bit >>> of discussion of this issue but I couldn't find any resolution. >>> Did anyone figure out how Apple got Tk working? >> >> I suggest you check $: for where your Ruby is looking for >> libraries and then verify whether or not tk.rb is available in one >> of those libraries. I think it's likely that it's not. >> >> Ruby 1.8.2 finds tk.rb in /usr/lib/ruby/1.8. but I don't know if >> this version will work with 1.8.5. >> >> Regards, Morton > > Good catch, Morton. tk.rb is nowhere to be found in any of my > $LOAD_PATH files. I still don't understand why I get the > 'uninitialized constant' message rather than 'no such file to load' > but the problem is that there really isn't any such file to load. OK, I thought I might be able to fix the problem by modifying my test program as follows: $: << '/usr/lib/ruby/1.8/powerpc-darwin8.0' require '/usr/lib/ruby/1.8/tk' root = TkRoot.new {title "Ex1"} TkLabel.new(root) do text 'Hello World!' pack {padx 15 ; pady 15; side 'left'} end But now I get: ~ $ ruby -w TK.rb dyld: NSLinkModule() error dyld: Symbol not found: _is_ruby_native_thread Referenced from: /usr/lib/ruby/1.8/powerpc-darwin8.0/tcltklib.bundle Expected in: flat namespace Trace/BPT trap All I can figure out from this is that the old version of tk.rb is loading a dynamic library and the dynamic loader can't resolve a symbol. I'd appreciate any pointer but I suspect that this is best pursued on one of the Apple mailing lists. -- For blocks are better cleft with wedges, Than tools of sharp or subtle edges, And dullest nonsense has been found By some to be the most profound. -Samuel Butler,