在初始化程序中找不到自己的配置块方法

问题描述 投票:0回答:1

我正在尝试根据以下内容为我的库代码进行自己的配置: 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
configure' for Imodule:Module (NoMethodError)

ruby-on-rails ruby
1个回答
1
投票

您发布的代码没有任何问题,除非在

lib/imodule/imodule.rb
中调用之前未加载
config/initializers/imodule.rb
中的代码。

看起来这是在一个名为

imodule
的 Rails 应用程序中,因此
Imodule
被定义为应用程序模块,这解释了为什么在未加载模块代码时只有
NoMethodError
而不是
NameError
.

Rails 不会自动要求

lib
目录中的文件,因此在文件顶部添加
require 'imodule/imodule'
将解决该问题。

© www.soinside.com 2019 - 2024. All rights reserved.