Sto scrivendo una gemma con cui vorrei lavorare e senza l'ambiente Rails.Impostazione delle impostazioni di configurazione durante la scrittura di un gioiello
Ho una classe Configuration
per consentire la configurazione della gemma:
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
Questo può ora essere utilizzato in questo modo:
NameChecker.configure do |config|
config.api_key = 'dfskljkf'
end
Tuttavia, non sembrano essere in grado di accedere le mie variabili di configurazione da withing le altre classi nella mia gemma. Per esempio, quando configuro la gemma nel mio spec_helper.rb
in questo modo:
# spec/spec_helper.rb
require "name_checker"
NameChecker.configure do |config|
config.api_key = 'dfskljkf'
end
e di riferimento la configurazione dal mio codice:
# lib/name_checker/net_checker.rb
module NameChecker
class NetChecker
p NameChecker.configuration.api_key
end
end
ottengo un errore metodo non definito:
`<class:NetChecker>': undefined method `api_key' for nil:NilClass (NoMethodError)
cosa c'è che non va nel mio codice?
Ecco un articolo su come configurare le gemme per gli altri che potrebbero essere interessati: http: // robot .thoughtbot.com/mygem-configure-block – Rimian