From: Eric Promislow Date: 2006-11-01T06:40:12+09:00 Subject: Re: Puzzling over why ri can open the std ruby/ri .yaml files, but raw yaml can't Simple workaround... clsInfo = YAML.load(File.open(clsFile) { |io| io.read.gsub(/- !.*/, '- ') } But I'd still appreciate hearing the cause for this bug. Happens with the stock Ruby 1.8.2 on OS X 10.4 running on an i386, but with a different error message. - Eric > > def get_class_info(clsName, info) > clsFile = "#{@sysdir}/#{clsName}/cdesc-#{clsName}.yaml" > puts "About to yaml <<#{clsFile}>>" > clsInfo = YAML.load(File.open(clsFile) { |io| io.read.gsub(/- !.*/, '- ') } > pp clsInfo > end > end > > rifinder = RiFinder.new("c:/ruby/share/ri/1.8/system", nil, nil) > rifinder.get_class_info("Abbrev", nil) > > #=========== > > About to yaml <> > I get this error: > c:/ruby/lib/ruby/1.8/yaml.rb:133:in `transfer': invalid subclass > (TypeError) > from c:/ruby/lib/ruby/1.8/yaml.rb:133:in `load' > from get_yaml_info.rb:19:in `get_class_info' > from get_yaml_info.rb:19:in `get_class_info' > from get_yaml_info.rb:25 > > ruby 1.8.4 (2006-04-14) [i386-mswin32] > > It's the same code, and I don't see ri setting any options in the YAML > namespace > telling it to process types like "!ruby/struct:SM::Flow::P" > differently, although I gather > this is the problem. > > Any advice? > > I can use yaml.rb to read back files I've written out with it. The > problem is with the > rdoc files. But it works when I go through ri (after adding the bug > fix at line 99 > of ri_descriptions.rb given in > http://ruby.about.com/od/gettingstarted/qt/ruby_ri.htm). > > Thanks, > Eric