Ruby Tk on Tiger

C

Chris Gehlker

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?
 
M

Morton Goldberg

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
 
C

Chris Gehlker

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.
 
C

Chris Gehlker

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,
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,981
Messages
2,570,188
Members
46,731
Latest member
MarcyGipso

Latest Threads

Top