This is kind of a hack, but it works
Object.const_get(:ClassName).is_a?(Class) rescue false
Above statement will return true if the class is defined and return false otherwise
문제
I have a utility class defined with a bunch of class methods. In the Rails console, when I search for the class using Object.const_defined?
it returns false. But after calling one of the class methods or creating an instance of the class, Object.const_defined?
returns true. Is this because of some kind of lazy loading instantiation kind of thing? Is there another way I can check for the existence of a class which will return true, even if I haven't instantiated anything yet?
해결책
This is kind of a hack, but it works
Object.const_get(:ClassName).is_a?(Class) rescue false
Above statement will return true if the class is defined and return false otherwise
다른 팁
You can use safe_constantize.
your_class = "YourClassName".safe_constantize
if your_class && your_class.class == Class
your_class.new(options).run
end