2011-08-24 69 views
3

我加載類從字符串這樣強制類加載和卸載(ROR)

Kernel.const_get(some_class_name).new 

它的工作原理,但什麼是做這種正確的方法是什麼?

更重要的是,有什麼辦法可以卸載一類嗎?我已經嘗試過

Object.send(:remove_const, some_class_name) 

但是這與之前的班級加載時不一樣。

注:與this有關。

回答

7

既然您標記使用Rails的問題,那麼你可以做

some_class_name.constantize 

"User".constantize 
# => User 

remove_const的作品,但是你需要從其中常量定義對象空間調用它。此外,請記住傳遞一個符號作爲常量名稱。

Object.send(:remove_const, :Foo) 
+0

謝謝!關於remove_const:迴應基本上是紅寶石期待'.rb'來定義我已經消除的常量。換句話說,它的工作,但沒有重置系統之前,類加載。 –

+0

那麼如何在定義常量之前重置系統? –