命名空间模块 class 方法未定义
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.foo
或 Reports::Stripe::foo
调用 foo,但我收到错误
NoMethodError: undefined method `foo' for Reports::Stripe:Module
我做错了什么?如果有更好的方法来组织位置和命名空间,也请随时告诉我。
ruby 中的所有方法调用都使用 .
语法。甚至 "module" 方法。
> Reports::Stripe.foo
i am foo
如果您在启动 rails 控制台后添加该方法,您可能会收到错误 NoMethodError: undefined method 'foo' for Reports::Stripe:Module
。尝试重新启动控制台或使用 load 'reports/stripe'
.
重新加载文件
文件实际位于 /lib/reports/stripe/stripe.rb
。这是我早先犯的一个错误,但忘了改正。将文件移动到 /lib/reports/stripe.rb
解决了问题。
出于命名空间的原因,我正在尝试使用模块。我在 /lib/reports/stripe.rb
的 Rails 应用程序中找到了这个文件。
module Reports
module Stripe
def self.foo
puts 'i am foo'
end
end
end
在我的控制台中,我希望能够通过 Reports::Stripe.foo
或 Reports::Stripe::foo
调用 foo,但我收到错误
NoMethodError: undefined method `foo' for Reports::Stripe:Module
我做错了什么?如果有更好的方法来组织位置和命名空间,也请随时告诉我。
ruby 中的所有方法调用都使用 .
语法。甚至 "module" 方法。
> Reports::Stripe.foo
i am foo
如果您在启动 rails 控制台后添加该方法,您可能会收到错误 NoMethodError: undefined method 'foo' for Reports::Stripe:Module
。尝试重新启动控制台或使用 load 'reports/stripe'
.
文件实际位于 /lib/reports/stripe/stripe.rb
。这是我早先犯的一个错误,但忘了改正。将文件移动到 /lib/reports/stripe.rb
解决了问题。