[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:003720] numru-units on ruby 2.1
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:003720] numru-units on ruby 2.1
- From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxx>
- Date: Thu, 10 Apr 2014 11:12:33 +0900
堀之内です。
どうやら Ruby 2.1 では単位ライブラリ numru-units がうまく動かない
ようです(先日の "1" 問題とは別)。Racc でうまく行ってないよう
なので,調査は難航しそうです。どなたか見当がつくと嬉しいのですが...
> 豊田さん,時間取れないですかね。
お試し用に電脳 K の私のホームの下
(/home/horinout/tmp/ruby2.1/bin/)に ruby 2.1.1 をインストール
してありますので (nurmu-unitsはgemでいれてある),アカウントの
ある方は試していただけます。
以下実行例です。
● ruby 2.0 だと(問題なし):
$ ruby --version
ruby 2.0.0p451 (2014-02-24 revision 45167) [i686-linux]
$ ruby -r numru/units -e "u=NumRu::Units['m/s']; u2=NumRu::Units['s']; puts u*u2"
m
● ruby 2.0 だと(問題あり):
$ use_ruby 2.1
ruby 2.1.1p76 (2014-02-24 revision 45161) [i686-linux]
$ ruby -r numru/units -e "u=NumRu::Units['m/s'];
u2=NumRu::Units['s']; puts u*u2"
/opt/ruby2.1/lib/ruby/site_ruby/2.1.0/numru/units.rb:209:in `foldnumber': undefined method `foldnumber' for Error[m/s]:NumRu::Units::ErrorNode (NoMethodError)
from /opt/ruby2.1/lib/ruby/site_ruby/2.1.0/numru/units.rb:139:in `reduce4'
from /opt/ruby2.1/lib/ruby/site_ruby/2.1.0/numru/units.rb:2611:in `binop'
from /opt/ruby2.1/lib/ruby/site_ruby/2.1.0/numru/units.rb:2616:in `*'
from -e:1:in `<main>'
このように演算がうまく行きません。これはパースがうまくいかない
からです:
$ ruby -r numru/units -e "u=NumRu::Units['m']; p u.do_parse2,
u.do_parse2.class"
Error[m]
NumRu::Units::ErrorNode
ここで,do_parse2 メソッドは Racc に投げた parse 処理の
結果が nil なので ErrorNode なるものを返してます。だから
問題はなんでちゃんと parse されないかということなんですが...。
堀之内 武