J'écris une gemme avec laquelle j'aimerais travailler et sans l'environnement Rails.Configuration des paramètres de configuration lors de l'écriture d'une gemme
J'ai une classe Configuration
pour permettre la configuration de la gemme:
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
Cela peut maintenant être utilisé comme ceci:
NameChecker.configure do |config|
config.api_key = 'dfskljkf'
end
Cependant, je ne semble pas être en mesure d'accéder mes variables de configuration venant avec les autres classes dans ma gemme. Par exemple, quand je configure la pierre précieuse dans mon spec_helper.rb
comme ceci:
# spec/spec_helper.rb
require "name_checker"
NameChecker.configure do |config|
config.api_key = 'dfskljkf'
end
et faire référence à la configuration de mon code:
# lib/name_checker/net_checker.rb
module NameChecker
class NetChecker
p NameChecker.configuration.api_key
end
end
Je reçois une erreur de méthode non définie:
`<class:NetChecker>': undefined method `api_key' for nil:NilClass (NoMethodError)
Quel est le problème avec mon code?
Voici un article sur la configuration des pierres précieuses pour d'autres qui pourraient être intéressés: http: // robots .thoughtbot.com/mygem-configure-block – Rimian