Piszę klejnot, który chciałbym pracować z i bez środowiska Rails.Konfigurowanie ustawień konfiguracyjnych podczas pisania gem
Mam klasy Configuration
umożliwiający konfigurację gem:
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
To może teraz być używane tak:
NameChecker.configure do |config|
config.api_key = 'dfskljkf'
end
Ja jednak nie wydają się być w stanie uzyskać dostęp moje zmienne konfiguracyjne z pozostałych klas w moim klejnocie. Na przykład, kiedy skonfigurować gem w moim spec_helper.rb
tak:
# spec/spec_helper.rb
require "name_checker"
NameChecker.configure do |config|
config.api_key = 'dfskljkf'
end
i odniesienie do konfiguracji z mojego kodu:
# lib/name_checker/net_checker.rb
module NameChecker
class NetChecker
p NameChecker.configuration.api_key
end
end
pojawia się niezdefiniowany błąd metoda:
`<class:NetChecker>': undefined method `api_key' for nil:NilClass (NoMethodError)
Co jest nie tak z moim kodem?
Oto artykuł na temat konfiguracji perełki dla innych, którzy mogą być zainteresowani: http: // robotów .thoughtbot.com/mygem-configure-block – Rimian