前回の最後でrakeタスクで警告が出ないようにしましたが、specファイルがどうもRSpec 1の時代のものという事がわかり実行してみましたが1/3くらいコケる orz これにかかづらっていては何日も浮上できそうにないです。
SpecをRSpec 2に移行させてGecode 3ベースに対応させていくとか自分にできるかどうかはおいておいて、魅力的ではありますが
gecoder-reduxはRuby 1.9で動く?
よく考えたらgecoder-redux自体を修正したいわけではなく制約プログラミングを試してみたいだけなので、当面Ruby 1.9でそこそこ動いてくれればよいわけですから、まずは第1回目の最も単純なサンプルが実行できるようになっているかを実行してみます。
前に入れたgemに影響されないように新しいgemsetを作って実行してみます。
$ cd /path/to/gecoder/work $ rvm gemset create gecoder-exec $ rvm use ruby-1.9.3-p327@gecoder-exec $ echo 'rvm ruby-1.9.3-p327@gecoder-exec' > .rvmrc $ ruby -I /path/to/gecoder-redux/lib ex00.rb x y z 0 3 3
ヽ(´ー`)ノ できた。
実行環境作り
毎回、LOAD PATHを指定するのは面倒なので.rvmrcの中でRUNLIBを設定してしまいます。
$ cd /path/to/gecoder/work $ echo 'export RUBYLIB=/path/to/gecoder-redux/lib:$RUBYLIB' >> .rvmrc $ pushd .. $ popd $ ruby ex00.rb x y z 0 3 3
この作業ディレクトリでRubyプログラムを実行すればRuby 1.9対応(のはず)のGecode/Rをrequireできるようになりました。
Ruby1.9での実行環境ができたので次回からは公式サイトの例を進めていきながら制約プログラミングしていきたいと思います。
おまけ
gecoder-reduxでは第2回のSymbol#to_i未定義をどうやって回避したのか気になったのでソースの対応箇所を見てみると...
Hash、Gecode::Util::COMPARISON_ALIASESのkey配列のindexを使うように修正されています。alias_[0-9]+_without_short_circuitが他とぶつかりそうで怖いなぁと一瞬思いましたが、生成されたreceiverオブジェクトの特異メソッドとして定義されるので心配ありませんね。
コメントする