繁体   English   中英

命名空间模块类方法未定义

[英]Namespace module class methods undefined

我正在出于命名原因尝试使用模块。 我在/lib/reports/stripe.rb Rails应用程序中有此文件。

module Reports
  module Stripe
    def self.foo
      puts 'i am foo'
    end
  end
end

在我的控制台中,我希望能够通过Reports::Stripe.fooReports::Stripe::foo调用Reports::Stripe::foo ,但是出现错误

NoMethodError: undefined method `foo' for Reports::Stripe:Module

我究竟做错了什么? 也可以随时告诉我是否有更好的方法来组织位置和命名空间。

红宝石中的所有方法调用都使用. 句法。 甚至“模块”方法。

> Reports::Stripe.foo
i am foo

如果您在启动rails控制台后添加了方法,则可能会收到错误NoMethodError: undefined method 'foo' for Reports::Stripe:Module 尝试重新启动控制台或使用load'reports load 'reports/stripe'重新加载文件。

该文件实际上位于/lib/reports/stripe/stripe.rb 这是我早些时候犯的一个错误,但忘了修复。 将文件移至/lib/reports/stripe.rb解决了该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM