考虑以下代码(我知道过去30分钟):
ax1
<matplotlib.axes._subplots.AxesSubplot at 0xcaa32b0>
ax2
<matplotlib.axes._subplots.AxesSubplot at 0xcaa32b0>
[1] pry(main)> DurhamScraper::Tweet
=> DurhamScraper::Tweet
[2] pry(main)> Object.const_get("DurhamScraper::Tweet")
NameError: wrong constant name DurhamScraper::Tweet
from (pry):2:in 'const_get'
[3] pry(main)> String
=> String
[4] pry(main)> Object.const_get("String")
=> String
是一个正确加载的类(正如您可以从第1行推断的那样)。我之前运行代码时没有引发任何异常。正确执行代码的唯一变化是我更改了存储库名称。关于如何进一步调试的建议,或者我如何解决这个问题?
答案 0 :(得分:2)
Per Ruby 2.1.1文档:如果提供了命名空间的类名,则此方法将以递归方式查找常量名称。
问题在于,当我更改目录的名称时,我不再使用Ruby 2.1.1而是使用Ruby 1.9.3。如果Object.const_get
无法正常工作,请务必查看Ruby版本和相应的文档。
对于不允许使用命名空间类名的Ruby的早期版本,您可以像kardeiz所建议的那样遍历层次结构:
Object.const_get(NAMESPACE).const_get(CLASS)