我有一个 gemified 引擎,这个引擎有一个函数,它将使用文件名中的 const_get 来填充一些数据库基本内容。
请注意,我对 Rails 还是很陌生。
我想要的是引擎测试常量是否首先存在,如果不存在,则将下划线案例中的第一个对象转换为命名空间而不是常量名称的一部分。
现在defined?
在这里不起作用,因为这些都是“加载路径中”的东西,所以如果它们还没有被加载,它们将不会被识别——在这一点上,我理解开发和生产环境的方式之间存在一些差异工作,我不完全理解差异,也找不到关于差异的详尽文档,所以如果我可以指出某些事情或简要解释发生的事情,那将是惊人的!所以基本上我想要的是以以下方式工作的东西:
def get_namespaced_class(underscored_name)
...
end
get_namespaced_call('mygem_some_class') #returns Mygem::SomeClass class
在我看来,该方法将首先检查是否MygemSomeClass
可访问,然后开始检查命名空间选项。
我真正想避免的一件事是抓住NameError
我认为这只是肮脏和错误的,我想查找我可以到达的东西,应该有一种方法可以做到这一点,我相信因为 rails 似乎自己在做.