I'm using Ruby 1.8.2 on Mac OS X 10.4.7. I discovered the Ruby distribution included a directory supporting [incr Widgets]. Some of them seemed pretty nifty, so I thought I'd try them out. My first try was to make an "instant" calendar with the Calendar widget. After a bit of fooling around I got a calendar up on my screen, but one of things I had to do to make it work bothers me.
The [incr Widgets] support files live in /usr/lib/ruby/1.8/tkextlib/iwidgets/. There is a file, /usr/lib/ruby/1.8/tkextlib/iwidgets.rb, that autoloads the iwidget classes. However, the iwidgets.rb is is coded with lines like
autoload :Calendar, 'tkextlib/iwidgets/calendar'
which means iwidgets.rb has to be one directory level up (in /usr/lib/ruby/1.8/) to work. So I put a copy of iwidgets.rb in in /usr/lib/ruby/1.8/. With that hack, "require 'iwidgets'" works -- at least in the short term. But what will happen if Apple installs a newer version of Ruby as part of an OS X update? Is there a better way to fix this sort of problem?