10/26/2006

Cache Class

如果你看過 Ruby on Rails 的書,他上面會有說在 Development Mode 裡面,Ruby on Rails 預設會auto reload class ,而不是將 class cache 住。這樣的好處是你不需要重新 restart server ,方便開發時間。這個選項在 config/enviroments/xxxxx.rb 裡面也可以手動修改設定
config.cache_classes = false
如果你要 cache class ,就把這個改成 true 即可。但是 Ruby on Rails 真的會 auto reload 所有的東西嗎?結論似乎不是這樣的。我開始開發時就發現,他只會 auto reload app/ 底下的 class ,所以所有的 config ,lib 之類的 class 有修改過都必須要重新啟動 server 。

這樣還好怎麼不麻煩,但是我今天又發現到,就算是 app/ 底下的 class ,也有一些不會 auto reload。今天有一個 Model Class ,他在 app/models/ 資料夾底下,他的 code 是這樣的
class User < ActiveRecord::Base
end
當你修改他的檔案內容,他會很正常的 auto reload。但是,同樣是在 app/models/ 資料夾下,如果他的Class 並不繼承 ActiveRecord ,像是這樣
class User
end
很奇怪的是他居然不會 auto reload 這個 class ,而是會將他 cache 住。如果一不小心,就很容易 debug de 半天。

1 則留言:

CFC 提到...

會reload class的只有Controller
Model很明顯不會的樣子=_=