在初始化程序

时间:2017-08-07 21:06:01

标签: ruby-on-rails ruby lib

我试图根据这个为我的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)

1 个答案:

答案 0 :(得分:1)

您发布的代码没有任何问题,只有lib/imodule/imodule.rb中的代码在config/initializers/imodule.rb中调用之前未加载。

看起来这是在名为imodule的Rails应用中,所以Imodule被定义为应用模块,解释了为什么你只有一个NoMethodError而不是{{1}当你的模块代码没有加载时。

Rails不会自动要求NameError目录中的文件,因此在文件顶部添加lib可以解决问题。