在Ruby中,很容易看出是否定义了一个模块:
defined? MyModule
但是在Rails中,当你这样做时,Rails会尝试加载模块(来自自动加载路径等)。因此,如果它不存在,则会抛出错误而不是返回false
。
我能做到
do
defined? MyModule
rescue
# false
end
但是有更好的方法吗?
答案 0 :(得分:0)
您使用的是什么版本的Ruby和Rails?当我尝试这个时,不会抛出任何错误:
ruby-1.9.3-p0 :1 > defined? Rails
=> "constant"
ruby-1.9.3-p0 :2 > defined? NotAConstant
=> nil