Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何知道模块是否在Rails中定义?_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何知道模块是否在Rails中定义?

Ruby on rails 如何知道模块是否在Rails中定义?,ruby-on-rails,Ruby On Rails,在Ruby中,很容易看到是否定义了模块: defined? MyModule 但在Rails中,当您这样做时,Rails会尝试加载模块(从自动加载路径等)。因此,如果它不存在,它将抛出一个错误,而不是返回false 我可以 do defined? MyModule rescue # false end 但是有更好的方法吗?您使用的是什么版本的Ruby和Rails?当我尝试此操作时,不会引发任何错误: ruby-1.9.3-p0 :1 > defined? Rails =>

在Ruby中,很容易看到是否定义了模块:

defined? MyModule
但在Rails中,当您这样做时,Rails会尝试加载模块(从自动加载路径等)。因此,如果它不存在,它将抛出一个错误,而不是返回
false

我可以

do
  defined? MyModule
rescue
  # false
end

但是有更好的方法吗?

您使用的是什么版本的Ruby和Rails?当我尝试此操作时,不会引发任何错误:

ruby-1.9.3-p0 :1 > defined? Rails
 => "constant" 
ruby-1.9.3-p0 :2 > defined? NotAConstant
 => nil 

你是在做一个Rails控制台吗?是的,否则Rails不会被定义