Sha256: b2a8266f658d7f6f37b88c7c6c6da9947aa66834629bb4baa0bef8dd939c77dd

Contents?: true

Size: 1.27 KB

Versions: 45

Compression:

Stored size: 1.27 KB

Contents

require 'fluent/config/types'

module Fluent
  class OjOptions
    OPTIONS = {
      'bigdecimal_load': :symbol,
      'max_nesting': :integer,
      'mode': :symbol,
      'use_to_json': :bool
    }

    ALLOWED_VALUES = {
      'bigdecimal_load': %i[bigdecimal float auto],
      'mode': %i[strict null compat json rails object custom]
    }

    DEFAULTS = {
      'bigdecimal_load': :float,
      'mode': :compat,
      'use_to_json': true
    }

    @@available = false

    def self.available?
      @@available
    end

    def self.load_env
      options = self.get_options
      begin
        require 'oj'
        Oj.default_options = options
        @@available = true
      rescue LoadError
        @@available = false
      end
      options
    end

    private

    def self.get_options
      options = {}
      DEFAULTS.each { |key, value| options[key] = value }

      OPTIONS.each do |key, type|
        env_value = ENV["FLUENT_OJ_OPTION_#{key.upcase}"]
        next if env_value.nil?

        cast_value = Fluent::Config.reformatted_value(OPTIONS[key], env_value, { strict: true })
        next if cast_value.nil?

        next if ALLOWED_VALUES[key] && !ALLOWED_VALUES[key].include?(cast_value)

        options[key.to_sym] = cast_value
      end

      options
    end
  end
end

Version data entries

45 entries across 45 versions & 2 rubygems

Version Path
fluentd-1.15.2-x86-mingw32 lib/fluent/oj_options.rb
fluentd-1.15.2-x64-mingw32 lib/fluent/oj_options.rb
fluentd-1.15.2-x64-mingw-ucrt lib/fluent/oj_options.rb
fluentd-1.15.2 lib/fluent/oj_options.rb
fluentd-1.15.1-x86-mingw32 lib/fluent/oj_options.rb
fluentd-1.15.1-x64-mingw32 lib/fluent/oj_options.rb
fluentd-1.15.1-x64-mingw-ucrt lib/fluent/oj_options.rb
fluentd-1.15.1 lib/fluent/oj_options.rb
fluentd-1.15.0-x86-mingw32 lib/fluent/oj_options.rb
fluentd-1.15.0-x64-mingw-ucrt lib/fluent/oj_options.rb
fluentd-1.15.0-x64-mingw32 lib/fluent/oj_options.rb
fluentd-1.15.0 lib/fluent/oj_options.rb
dtomasgu-fluentd-1.14.8.pre.dev lib/fluent/oj_options.rb
dtomasgu-fluentd-1.14.7.pre.dev lib/fluent/oj_options.rb
fluentd-1.14.6-x86-mingw32 lib/fluent/oj_options.rb
fluentd-1.14.6-x64-mingw-ucrt lib/fluent/oj_options.rb
fluentd-1.14.6-x64-mingw32 lib/fluent/oj_options.rb
fluentd-1.14.6 lib/fluent/oj_options.rb
fluentd-1.14.5-x64-mingw-ucrt lib/fluent/oj_options.rb
fluentd-1.14.5-x86-mingw32 lib/fluent/oj_options.rb