2011-08-24 66 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

那么如何在定义常量之前重置系统? –