我创造了一个宝石:
module Core
require "lib/doctor"
require "lib/slot"
end
module Core
class Doctor
def message
puts Slot.message
end
end
end
module Core
class Slot
def message
return "Hello World"
end
end
end
如果我使用我获得的宝石:
Gem Load Error is: uninitialized constant Core::Doctor::Slot
答案 0 :(得分:3)
从错误中可以看出,ruby正试图在Slot
的上下文中加载常量Core::Doctor
。但是,您希望在Slot
的上下文中使用Core
。所以,试试:
module Core
class Doctor
def message
puts Core::Slot.message
end
end
end
另外,这里:
puts Core::Slot.message
您尝试将message
作为类方法调用。但是,这里:
module Core
class Slot
def message
return "Hello World"
end
end
end
您将message
定义为实例方法。
如果您希望message
成为类方法,则需要执行以下操作:
module Core
class Slot
def self.message
return "Hello World"
end
end
end
或
module Core
class Slot
class << self
def message
return "Hello World"
end
end
end
end
(取决于您的偏好)。如果您想保留message
作为实例方法,那么您需要执行以下操作:
puts Core::Slot.new.message