Sha256: a674a01703ac1551f32610795715729496d9a76dc7ced7f117ab17cffc789980

Contents?: true

Size: 1.57 KB

Versions: 4

Compression:

Stored size: 1.57 KB

Contents

module ProconBypassMan
  class Configuration
    module Loader
      def self.load(setting_path: )
        validation_instance = ProconBypassMan::Configuration.switch_context(:validation) do |instance|
          begin
            yaml = YAML.load_file(setting_path) or raise "読み込みに失敗しました"
            instance.instance_eval(yaml["setting"])
          rescue SyntaxError
            instance.errors[:base] << "Rubyのシンタックスエラーです"
            next(instance)
          rescue Psych::SyntaxError
            instance.errors[:base] << "yamlのシンタックスエラーです"
            next(instance)
          end
          instance.valid?
          next(instance)
        end

        if !validation_instance.errors.empty?
          raise ProconBypassMan::CouldNotLoadConfigError, validation_instance.errors
        end

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

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

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
procon_bypass_man-0.1.5 lib/procon_bypass_man/configuration/loader.rb
procon_bypass_man-0.1.4 lib/procon_bypass_man/configuration/loader.rb
procon_bypass_man-0.1.3 lib/procon_bypass_man/configuration/loader.rb
procon_bypass_man-0.1.2 lib/procon_bypass_man/configuration/loader.rb