[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000980] Re: AdvancedDCL-0.1.8 Install Memo
堀之内です。
> AdvancedDCL と Ruby-NetCDF のデモプログラムのエラーに
> 関してですが、AdvancedDCLは単純なミスですぐ直せましたが、
> Ruby-NetCDFの方の原因が特定できませんでした。NumRu のインクルード
> をやめてみたり、エラーの出たpathメソッドを削除してみたり
> したのですが改善には至りませんでした。ただ、Ruby のバージョンを
> 1.6.5 に上げると以下のエラーは出ませんでした。
>
> >[koshiro@xxxxxx demo]$ ruby demo2-graphic.rb
> >/usr/lib/ruby/site_ruby/1.6/numru/netcdf.rb:130: undefined method path'
> for
> >class NumRu::NetCDF' (NameError)
> > from demo2-graphic.rb:2:in require'
> > from demo2-graphic.rb:2
これ本当ですか? バージョン上げてみたんだけど改善しませんでした。
というか、別のエラーが出るようになった。
% ruby demo2-graphic.rb
demo2-graphic.rb:10:in `write_file': uninitialized constant AdvancedDCL (NameError)
from demo2-graphic.rb:64
実は、どうも
require "numru/advanceddcl"
require "numru/netcdf"
とすると前の記憶が消えてしまうようです。上の2行を入れ替えると、
NetCDF がないとおこられる。実は問題は、両者とも拡張ライブラリー
で(advanceddcl は配下の rubydcl で)、rb_define_module してる
ことのようです。netcdfraw.c 及び RubyDCL の init.c ともに、
mNum = rb_define_module("NumRu");
で、モジュール定義してますが、どうやら Ruby プログラム内のように
追加にならず、上書きになるようです(ところで、これはグローバル変
数なんだから NumRu --> mNumRu を勝手に縮めて mNum とするのは大変
まずい!)。 ためしに一方をコメントアウトしたら問題なく動きまし
た。でもそれじゃ使えないので、条件判断しないとならないですね。
Ruby のパーサーはほんとにそれをしてるんだろうか??
堀之内