Sha256: c4704143685495575e7598c0ff11e589d973474d07feff6e08b0c92691c1185e

Contents?: true

Size: 1.76 KB

Versions: 2

Compression:

Stored size: 1.76 KB

Contents

module ProconBypassMan
  class ButtonsSettingConfiguration
    module Loader
      require 'digest/md5'

      def self.load(setting_path: )
        ProconBypassMan::ButtonsSettingConfiguration.switch_new_context(:validation) do |validation_instance|
          yaml = YAML.load_file(setting_path) or raise "読み込みに失敗しました"
          validation_instance.instance_eval(yaml["setting"])
          validator = Validator.new(validation_instance)
          if validator.valid?
            next
          else
            raise ProconBypassMan::CouldNotLoadConfigError, validator.errors
          end
        rescue SyntaxError
          raise ProconBypassMan::CouldNotLoadConfigError, "Rubyのシンタックスエラーです"
        rescue Psych::SyntaxError
          raise ProconBypassMan::CouldNotLoadConfigError, "yamlのシンタックスエラーです"
        end

        yaml = YAML.load_file(setting_path)
        ProconBypassMan::ButtonsSettingConfiguration.instance.setting_path = setting_path
        ProconBypassMan::ButtonsSettingConfiguration.instance.reset!
        ProconBypassMan.reset!

        case yaml["version"]
        when 1.0, nil
          ProconBypassMan::ButtonsSettingConfiguration.instance.instance_eval(yaml["setting"])
        else
          ProconBypassMan.logger.warn "不明なバージョンです。failoverします"
          ProconBypassMan::ButtonsSettingConfiguration.instance.instance_eval(yaml["setting"])
        end

        File.write(ProconBypassMan.digest_path, Digest::MD5.hexdigest(yaml["setting"]))

        ProconBypassMan::ButtonsSettingConfiguration.instance
      end

      def self.reload_setting
        self.load(setting_path: ProconBypassMan::ButtonsSettingConfiguration.instance.setting_path)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
procon_bypass_man-0.1.11 lib/procon_bypass_man/configuration/loader.rb
procon_bypass_man-0.1.10 lib/procon_bypass_man/configuration/loader.rb