トップ «前の日記(2014/05/17 (土) ) 最新 次の日記(2014/05/19 (月) )» 編集 RSS feed

HsbtDiary


2014/05/18 (日) [長年日記]

[rails][ruby] Ruby 2.2.0 で Rails 4.1.1 を動かす環境を作った

過去をふりかえるフェーズは終わったので、年末リリースに向けて動かない原因となる Ruby や gem の挙動を片っ端から直す業を開始した.

盛大に動かなくて死ぬポイントはbullet にあるような引数で同名の値/メソッドを渡した時の挙動の変更くらいなので、最初にrails/rails の 4-1-stable を指定すればこの問題は解決する。これは 4.1.2 で直るはずなので次に行く.

次に high_voltage が動かなくて何だろうなあと調べていったら、2.2.0 で "//" を含むパスを与えた時の Dir.glob の挙動が変わっているのが原因だった.

% ruby -ve "p Dir.glob('.//app').any?"
ruby 2.1.2p102 (2014-05-16 revision 45956) [x86_64-darwin13.0]
true

% ruby -ve "p Dir.glob('.//app').any?"
ruby 2.2.0dev (2014-05-15 trunk 45954) [x86_64-darwin13]
false

なんすかこれ〜と n0kada さんに聞いてみたら、true になるけどという話なので trunk をビルドしなおしたら確かに true になっていた.

% ruby -ve "p Dir.glob('.//app').any?"
ruby 2.2.0dev (2014-05-18 trunk 46002) [x86_64-darwin13]
true

ここ数日変えている Dir.glob の余波でついでに 2.1 の挙動に戻っていたみたい。trunk まじ trunk.

他にも Time.stubs(:now).returns(foo) みたいに Time.now を書き換えている箇所の奥底で time.rb が死んでいたけど、こいつはただのテストコードだったので Rails 4.1 の travel_to ヘルパーで書き直したら解決した。

これで 2.2.0 がいつ挙動変更してもすぐにトレースできるようになった。便利。