-3

我正在打包我自己的 gem,其中包括一个名为 的模块Convert3D和一个名为ShapeSet.

当我尝试从 ShapeSet 的初始化方法中调用 Convert3D 模块的方法时,会出现以下错误。需要 Convert3D 模块,并且该方法在调用 ShapeSet.new 的 irb 上下文中工作。

NameError: uninitialized constant ShapeSet::Convert3d

鉴于在任何地方都没有提到“ShapeSet::Convert3d”,红宝石在这里做什么,我可能做错了什么导致它?

我在 OSX 10.8.2 上使用 Matz Ruby 1.9.3

4

2 回答 2

2

您有一个错字:您忘记将 d 大写。

通过在 Shapeset 类的方法中编写 Convert3d,您是在询问 ruby​​ 是否存在 Shapeset::Convert3d OR ::Convert3d 并且它都没有找到。

于 2013-02-17T17:44:46.527 回答
2

因为您指Convert3D的是 的上下文内部,所以ShapeSetruby​​ 会尝试查找ShapeSet::Convert3D. 不知道为什么有时会发生这种情况,有时不会。

但解决方案很简单:为了确保您Convert3D在全局命名空间中引用,您始终可以编写::Convert3D.

HTH。

于 2013-02-17T17:46:53.003 回答