August 11, 2006 - Riding Rails: Reloading Revamped

自称かつてない勢いでRails特訓中。都合によりPerlで作られたレガシーなCGIツールを部分的に置き換えとかやろうとしてるので、本来はまらなくていいところではまりがち。まあ、ぼちぼちと。

さて、タイトルの件。古い話とお思いでしょうが・・・。

Railsのプロジェクトに昔作った自作クラスを組み込んでみたが、サーバ起動中にクラス内容書き換えてもリロードしてくれない。ファイルの配置が悪いのかと思っていろいろ変えてみても、だめっぽい。今日はひたすらサーバ再起動(mongrelね)を繰り返してた。開発用スペックの端末を買ってもらえなかったので、再起動の待ち時間が結構いたい。待ってる時間って完全に脳が停止してくれればいんだけど実際はたいてい別のことを考え始めて認知リソースが浪費されてしまうのよね。

改めてちょっと調べてみたら、昔はReloadableってモジュールがあったらしい。で、タイトルの記事によると、すでにdeprecatedだよと。

  • reloadして欲しいクラスは、requireを使わずいきなりクラス名を書けばautoloadのあと勝手にunloadされるよ。
  • reloadして欲しくないクラス(rubyの標準ライブラリとか)は、requireで呼べばいいよ。

ということらしい。っていうのを、確認したかったけど時間切れ。まあ、今日苦労した感じだとRails 2.0でもあてはまるんじゃないかな。

追記:なんか違う。確認中・・・。

追記:

  • reloadして欲しいクラスは、require_dependencyを使うといいよ。

ってことらしい。const_missingを利用してautoloadもできるみたいだけど、やめとこっと。

参考: