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?