我正在为我的Rails应用程序编写gem,它计算一些东西并使用类和模块。
这是文件结构。
root
->lib
-->finances
--->version.rb
--->finances.rb
--->calculator
----->formulas.rb
--->finalize
---->schedule.rb
-->finances.rb
现在root/lib/finances.rb
require "finances/version"
require "finances/finances"
require "finances/finalize/schedule"
require "finances/calculator/formulas"
root/lib/finances/calculator/formulas.rb
module Calculator
module Formulas
def method
end
end
end
root/lib/finances/finalize/schedule.rb
module Finalize
class Schedule
include ::Calculator::Formulas
end
end
但我得到uninitialized constant Calculator (NameError)
如果我尝试使用
::Calculator::Formulas.method
它抛出NoMethodError (undefined method
方法' for Calculator :: Formulas:Model):`
我究竟做错了什么。我似乎无法解决这个问题。有谁可以帮忙。
答案 0 :(得分:1)
您尝试将method
用作Formulas
'模块方法',而您将其定义为常规实例方法。所以它应该在RepaymentSchedule
实例上调用:
rs = RepaymentSchedule.new
rs.method
此外,您需要确保加载顺序正确。在这里,您应该在加载require
类之前Formulas
包含Schedule
模块的文件,否则您将获得未初始化的常量错误。