Konfigurationseinstellungen beim Schreiben eines Gems einrichten

Ich schreibe ein Juwel, mit dem ich mit und ohne die Rails-Umgebung arbeiten möchte.

Ich habe einConfiguration Klasse, um die Konfiguration des Gems zu ermöglichen:

module NameChecker
  class Configuration
    attr_accessor :api_key, :log_level

    def initialize
      self.api_key = nil
      self.log_level = 'info'
    end
  end

  class << self
    attr_accessor :configuration
  end

  def self.configure
    self.configuration ||= Configuration.new
    yield(configuration) if block_given?
  end
end

Dies kann nun so verwendet werden:

NameChecker.configure do |config|
  config.api_key = 'dfskljkf'
end

Ich scheine jedoch nicht in der Lage zu sein, mit den anderen Klassen in meinem Gem auf meine Konfigurationsvariablen zuzugreifen. Zum Beispiel, wenn ich den Edelstein in meinem konfigurierespec_helper.rb wie so:

# spec/spec_helper.rb
require "name_checker"

NameChecker.configure do |config|
  config.api_key = 'dfskljkf'
end

und verweise auf die Konfiguration aus meinem Code:

# lib/name_checker/net_checker.rb
module NameChecker
  class NetChecker
    p NameChecker.configuration.api_key
  end
end

Ich erhalte einen undefinierten Methodenfehler:

`<class:NetChecker>': undefined method `api_key' for nil:NilClass (NoMethodError)

Was ist los mit meinem Code?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage