Sha256: 2ff4fe7194245c81c25467ed956491d13200ab98f67e38ff4a53cf44ee738896

Contents?: true

Size: 1.18 KB

Versions: 25

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module Decidim
  # This class can be used to parse ENV variables to a set of predefined values
  # For instance, "", nil, "false" or 0 will all translate into false using valid?
  class Env
    FALSE_VALUES = %w(0 false no).freeze

    def initialize(name, default = nil)
      @name = name
      @value = ENV.fetch(name, nil)
      @default = default
    end

    def value
      @value.presence || @default
    end

    delegate :to_s, :to_json, to: :value

    def blank?
      value.blank? || FALSE_VALUES.include?(value.to_s.downcase)
    end

    # rubocop:disable Rails/Present
    def present?
      !blank?
    end
    # rubocop:enable Rails/Present

    def to_boolean_string
      present?.to_s
    end

    def to_i
      str = blank? ? @default : value
      str.to_s.to_i
    end

    def to_f
      str = blank? ? @default : value
      str.to_s.to_f
    end

    def default_or_present_if_exists
      return @default unless ENV.has_key?(@name)

      @value.present? && FALSE_VALUES.exclude?(@value.to_s.downcase)
    end

    def to_array(separator: ",")
      str = blank? ? @default : value
      str.to_s.split(separator).map(&:strip)
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
decidim-core-0.29.1 lib/decidim/env.rb
decidim-core-0.28.4 lib/decidim/env.rb
decidim-core-0.27.9 lib/decidim/env.rb
decidim-core-0.29.0 lib/decidim/env.rb
decidim-core-0.28.3 lib/decidim/env.rb
decidim-core-0.27.8 lib/decidim/env.rb
decidim-core-0.29.0.rc4 lib/decidim/env.rb
decidim-core-0.29.0.rc3 lib/decidim/env.rb
decidim-core-0.29.0.rc2 lib/decidim/env.rb
decidim-core-0.29.0.rc1 lib/decidim/env.rb
decidim-core-0.28.2 lib/decidim/env.rb
decidim-core-0.27.7 lib/decidim/env.rb
decidim-core-0.28.1 lib/decidim/env.rb
decidim-core-0.27.6 lib/decidim/env.rb
decidim-core-0.28.0 lib/decidim/env.rb
decidim-core-0.27.5 lib/decidim/env.rb
decidim-core-0.28.0.rc5 lib/decidim/env.rb
decidim-core-0.28.0.rc4 lib/decidim/env.rb
decidim-core-0.27.4 lib/decidim/env.rb
decidim-core-0.27.3 lib/decidim/env.rb