123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- require "dotenv/parser"
- require "dotenv/environment"
- module Dotenv
- class << self
- attr_accessor :instrumenter
- end
- module_function
- def load(*filenames)
- with(*filenames) do |f|
- ignoring_nonexistent_files do
- env = Environment.new(f)
- instrument("dotenv.load", :env => env) { env.apply }
- end
- end
- end
-
- def load!(*filenames)
- with(*filenames) do |f|
- env = Environment.new(f)
- instrument("dotenv.load", :env => env) { env.apply }
- end
- end
-
- def overload(*filenames)
- with(*filenames) do |f|
- ignoring_nonexistent_files do
- env = Environment.new(f)
- instrument("dotenv.overload", :env => env) { env.apply! }
- end
- end
- end
-
-
-
- def with(*filenames, &block)
- filenames << ".env" if filenames.empty?
- filenames.reduce({}) do |hash, filename|
- hash.merge! block.call(File.expand_path(filename)) || {}
- end
- end
- def instrument(name, payload = {}, &block)
- if instrumenter
- instrumenter.instrument(name, payload, &block)
- else
- block.call
- end
- end
- def ignoring_nonexistent_files
- yield
- rescue Errno::ENOENT
- end
- end
|