我试图根据这个为我的lib代码进行自己的配置: https://robots.thoughtbot.com/mygem-configure-block
LIB / IModule的/ imodule.rb:
module Imodule
class << self
attr_accessor :configuration
end
def self.configure
self.configuration ||= Configuration.new
yield(configuration)
end
class Configuration
attr_accessor :api_key
attr_reader :api_url
def initialize
@api_url = 'https://api.test.com'
end
end
end
初始化/ imodule.rb:
Imodule.configure do |c|
c.api_key = '4db6-93b3'
end
但我得到了:
/home/user/Documents/Projects/imodule/config/initializers/imodule.rb:2:in
<top (required)>': undefined method
配置&#39; for Imodule:Module(NoMethodError)
答案 0 :(得分:1)
您发布的代码没有任何问题,只有lib/imodule/imodule.rb
中的代码在config/initializers/imodule.rb
中调用之前未加载。
看起来这是在名为imodule
的Rails应用中,所以Imodule
被定义为应用模块,解释了为什么你只有一个NoMethodError
而不是{{1}当你的模块代码没有加载时。
Rails不会自动要求NameError
目录中的文件,因此在文件顶部添加lib
可以解决问题。