[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[kagemai-users:0604] Re: ruby1.8.5で動作せず



福岡です。

06/10/31 に Kouhei Sutou<kou@xxxxxxxxxxxx> さんは書きました:
> 須藤です.
>
> 新しいERBが入っているんだと思います.
>
> 新しいERBでは影舞がいじっているERB#set_eoutvar(というか
> ERB::Compiler)の仕様が変わっています.

最新の erb.rb を使うと問題が再現することと、

> 解決策としてはkagemai/util.rbから
>
>   class ERB
>     alias set_eoutvar_orig set_eoutvar
>
>     def set_eoutvar(compiler, eoutvar = '_erbout')
(snip)
>     end
>   end
>
> を削除するのがいいと思います.

で問題が解決することを確認しました。

> もともと,↑の変更はruby 1.6の頃,Stringに<<していくよりも
> Arrayに<<して最後にjoinした方が速いというのに基づいたハック
> だったのだと思います.しかし,ruby 1.8ではどちらもそれほど大
> 差がない(String#<<の方が速かったかも)というのをruby-listだっ
> たかで見た気がします.

該当のコードは、もともと影舞を 0.7.1 (eRuby) から 0.8.0 (erb) に
したときに、0.8 が予想以上に遅くて、原因をプロファイルした
結果から追加したコードだったように思います。また、ruby 1.8 は
リリースされてなくて、erb.rb も標準ではついてなかった頃の話ですね。

今ではご指摘のとおり不要なコードだと思うので、CVS (stable-0_8)上
でも消しておきました。

-- FUKUOKA Tomoyuki