Chris Gehlker
9/17/2006 5:33:00 PM
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,