gnomecanvasがdeprecatedになってしまったらしいので、
goocanvasを試してみることにしたらサンプルの実行でいきなりつまづいた。
c:\ruby\lib\ruby\gems\1.9.1\gems\goocanvas-0.90.9-x86-mingw32\sample>ruby demo.r b <internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- goocanvas.so (LoadError) from <internal:lib/rubygems/custom_require>:29:in `require' from c:/ruby/lib/ruby/gems/1.9.1/gems/goocanvas-0.90.9-x86-mingw32/lib/g oocanvas.rb:3:in `<top (required)>' from <internal:lib/rubygems/custom_require>:33:in `require' from <internal:lib/rubygems/custom_require>:33:in `rescue in require' from <internal:lib/rubygems/custom_require>:29:in `require' from demo.rb:39:in `<main>'
これは多分gtk2と同じようなことをしてやれば良いのだろうということでlib/goocanvas.rbを修正してみた。
--- C:/ruby/lib/ruby/gems/1.9.1/gems/goocanvas-0.90.9-x86-mingw32/lib/goocanvas.rb.orig Sat Jun 11 21:07:33 2011 +++ C:/ruby/lib/ruby/gems/1.9.1/gems/goocanvas-0.90.9-x86-mingw32/lib/goocanvas.rb Sat Jul 09 00:59:02 2011 @@ -1,6 +1,16 @@ require 'gtk2' require 'cairo' -require 'goocanvas.so' + +base_dir = Pathname.new(__FILE__).dirname.dirname.expand_path +vendor_dir = base_dir + "vendor" + "local" +vendor_bin_dir = vendor_dir + "bin" +GLib.prepend_environment_path(vendor_bin_dir) +begin + major, minor, micro, = RUBY_VERSION.split(/\./) + require "#{major}.#{minor}/goocanvas.so" +rescue LoadError + require "goocanvas.so" +end module Goo LOG_DOMAIN="Goo"
これでとりあえずサンプルを動かすことができるようになった。
demo-fifteen.rbについては1.8だと問題ないけど、1.9だと159行目あたりでuptoのブロック内でretry使っているのが、ひっかかる。