[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 のパーサーはほんとにそれをしてるんだろうか??

堀之内