Ruby Tk on Tiger

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?

···

--
And those who were seen dancing were thought to be insane by those who could not hear the music.
-Friedrich Wilhelm Nietzsche, philosopher (1844-1900)

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

···

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?

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.

···

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

--
Seven Deadly Sins? I thought it was a to-do list!

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.

···

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.

--
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,