Sha256: 16a9465539d87db180119e158d341290d365564bd97b06f0901d55cbd5b7eb93
Contents?: true
Size: 1.98 KB
Versions: 41
Compression:
Stored size: 1.98 KB
Contents
require 'pact_broker/configuration' require 'pact_broker/logging' require 'pact_broker/config/setting' module PactBroker module Config class Save include PactBroker::Logging def self.call configuration, setting_names new(configuration, setting_names).call end def initialize configuration, setting_names @configuration = configuration @setting_names = setting_names end def call setting_names.each do | setting_name | if class_supported?(setting_name) create_or_update_setting(setting_name) else logger.warn "Could not save configuration setting \"#{setting_name}\" to database as the class #{get_value(setting_name).class} is not supported." end end end private attr_reader :configuration, :setting_names def create_or_update_setting setting_name setting = Setting.find(name: setting_name.to_s) || Setting.new(name: setting_name.to_s) setting.type = get_db_type(setting_name) setting.value = get_db_value(setting_name) setting.save end def class_supported? setting_name !!get_db_type(setting_name) end def get_db_type setting_name val = get_value(setting_name) case val when true, false 'boolean' when String, nil 'string' when Array, Hash 'json' when Integer 'integer' when Float 'float' else nil end end def get_db_value setting_name val = get_value(setting_name) case val when String, Integer, Float, NilClass val when TrueClass "1" when FalseClass "0" when Array, Hash val.to_json else nil end end def get_value setting_name configuration.send(setting_name) end end end end
Version data entries
41 entries across 41 versions & 1 rubygems