Ruby/rspec无法识别与前一个模块同名的Ruby类

Col*_*ley 6 ruby rspec module class

我有一个ruby类,Feedbin,以前是模块的名称.当我尝试调用类中的任何方法时,抛出TypeError:`':Feedbin不是类(TypeError)

当我更改类的名称,但附加一个例如s时,事情似乎按预期工作.

同样的程序也有一个名为Feedbin的模块,但模块不再存在.

旧:

module Feedbin
  class Api
  end
end
Run Code Online (Sandbox Code Playgroud)

新:

class Feedbin
end
Run Code Online (Sandbox Code Playgroud)

如何摆脱"Feedbin不是类"类型错误?是什么造成的?

saw*_*awa 11

非类模块不能更改为类.一旦定义了(非类)模块,就无法将其更改为类.你可能有:

class Feedbin
...
Run Code Online (Sandbox Code Playgroud)

在你拥有之前的某个地方

module Feedbin
...
Run Code Online (Sandbox Code Playgroud)

将其更改classmodule或使用其他名称而不是Feedbin其中一个名称.

或者,某些方法是否出现错误消息?某些方法只能在类上定义.例如,如果你打电话Feedbin.new,或者一些要求initializeFeedbin,并改变Feedbin成非类模块,那么这将导致错误.在这种情况下,请为非类模块使用不同的名称.

  • 你不能拥有2个具有相同名称的常量,这就是为什么Ruby不允许你拥有同名的模块和类.您必须在所有应用中选择并更改它. (2认同)