module Dotenv

The top level Dotenv module. The entrypoint for the application logic.

Constants

VERSION

Attributes

instrumenter[RW]

Public Instance Methods

ignoring_nonexistent_files() { || ... } click to toggle source
# File lib/dotenv.rb, line 82
def ignoring_nonexistent_files
  yield
rescue Errno::ENOENT
end
instrument(name, payload = {}) { || ... } click to toggle source
# File lib/dotenv.rb, line 68
def instrument(name, payload = {}, &block)
  if instrumenter
    instrumenter.instrument(name, payload, &block)
  else
    yield
  end
end
load(*filenames) click to toggle source
# File lib/dotenv.rb, line 13
def load(*filenames)
  with(*filenames) do |f|
    ignoring_nonexistent_files do
      env = Environment.new(f, true)
      instrument("dotenv.load", env: env) { env.apply }
    end
  end
end
load!(*filenames) click to toggle source

same as `load`, but raises Errno::ENOENT if any files don't exist

# File lib/dotenv.rb, line 23
def load!(*filenames)
  with(*filenames) do |f|
    env = Environment.new(f, true)
    instrument("dotenv.load", env: env) { env.apply }
  end
end
overload(*filenames) click to toggle source

same as `load`, but will override existing values in `ENV`

# File lib/dotenv.rb, line 31
def overload(*filenames)
  with(*filenames) do |f|
    ignoring_nonexistent_files do
      env = Environment.new(f, false)
      instrument("dotenv.overload", env: env) { env.apply! }
    end
  end
end
overload!(*filenames) click to toggle source

same as `overload`, but raises Errno::ENOENT if any files don't exist

# File lib/dotenv.rb, line 41
def overload!(*filenames)
  with(*filenames) do |f|
    env = Environment.new(f, false)
    instrument("dotenv.overload", env: env) { env.apply! }
  end
end
parse(*filenames) click to toggle source

returns a hash of parsed key/value pairs but does not modify ENV

# File lib/dotenv.rb, line 49
def parse(*filenames)
  with(*filenames) do |f|
    ignoring_nonexistent_files do
      Environment.new(f, false)
    end
  end
end
require_keys(*keys) click to toggle source
# File lib/dotenv.rb, line 76
def require_keys(*keys)
  missing_keys = keys.flatten - ::ENV.keys
  return if missing_keys.empty?
  raise MissingKeys, missing_keys
end
with(*filenames) { |expand_path| ... } click to toggle source

Internal: Helper to expand list of filenames.

Returns a hash of all the loaded environment variables.

# File lib/dotenv.rb, line 60
def with(*filenames)
  filenames << ".env" if filenames.empty?

  filenames.reduce({}) do |hash, filename|
    hash.merge!(yield(File.expand_path(filename)) || {})
  end
end