Module: Dotenv::Substitutions::Variable

Defined in:
lib/dotenv/substitutions/variable.rb

Overview

Substitute variables in a value.

HOST=example.com
URL="https://$HOST"

Constant Summary collapse

VARIABLE =
/
  (\\)?         # is it escaped with a backslash?
  (\$)          # literal $
  (?!\()        # shouldnt be followed by paranthesis
  \{?           # allow brace wrapping
  ([A-Z0-9_]+)? # optional alpha nums
  \}?           # closing brace
/xi

Class Method Summary collapse

Class Method Details

.call(value, env, is_load) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/dotenv/substitutions/variable.rb', line 21

def call(value, env, is_load)
  combined_env = if is_load
                   env.merge(ENV)
                 else
                   ENV.to_h.merge(env)
                 end
  value.gsub(VARIABLE) do |variable|
    match = $LAST_MATCH_INFO
    substitute(match, variable, combined_env)
  end
end