Estoy escribiendo una joya con la que me gustaría trabajar y sin el entorno de Rails.Configuración de configuración al escribir una gema
tengo una clase Configuration
para permitir la configuración de la gema:
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
Esto puede ahora ser utilizado de esta manera:
NameChecker.configure do |config|
config.api_key = 'dfskljkf'
end
Sin embargo, no parecen ser capaces de acceso mis variables de configuración de entre las otras clases en mi gema. Por ejemplo, cuando configuro la joya en mi spec_helper.rb
así:
# spec/spec_helper.rb
require "name_checker"
NameChecker.configure do |config|
config.api_key = 'dfskljkf'
end
y referencia la configuración de mi código:
# lib/name_checker/net_checker.rb
module NameChecker
class NetChecker
p NameChecker.configuration.api_key
end
end
consigo un error indefinido método:
`<class:NetChecker>': undefined method `api_key' for nil:NilClass (NoMethodError)
¿Qué pasa con mi código?
He aquí un artículo sobre la configuración de las gemas para otros que puedan estar interesados: http: // robots .thoughtbot.com/mygem-configure-block – Rimian