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

时间:2015-05-15 23:54:04

标签: ruby-on-rails module

我正在尝试将模块用于命名空间的原因。我在/lib/reports/stripe.rb的Rails应用程序中找到了此文件。

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

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

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

我做错了什么?如果有更好的方法来组织位置和命名空间,也请随时告诉我。

2 个答案:

答案 0 :(得分:2)

ruby​​中的所有方法调用都使用.语法。甚至"模块"方法

> Reports::Stripe.foo
i am foo

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

答案 1 :(得分:0)

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