class HomeDotenv

USAGE: HomeDotenv.parse

Public Class Methods

parse(filename = nil) click to toggle source

With a ~/.env

SECRET_KEY=so-secret-really

HOME_ENV = HomeDotenv.parse puts HOME_ENV

# File lib/home-dotenv.rb, line 10
def self.parse(filename = nil)
  parsed_from_file(filename).merge(parsed_from_env)
end

Private Class Methods

parse_line(line) click to toggle source
# File lib/home-dotenv.rb, line 34
def parse_line(line)
  key = line.split('=').first.to_sym
  value = line.split('=')[1..-1].join('=')
  [key, value]
end
parsed_from_env() click to toggle source
# File lib/home-dotenv.rb, line 17
def parsed_from_env
  Hash[*ENV.map { |k, v| [k.to_sym, v]}.flatten]
end
parsed_from_file(filename) click to toggle source
# File lib/home-dotenv.rb, line 21
def parsed_from_file(filename)
  Hash[*read_lines(filename).map { |l| parse_line(l) }.flatten]
end
read_lines(filename = nil) click to toggle source
# File lib/home-dotenv.rb, line 25
def read_lines(filename = nil)
  filename ||= Dir.home + '/.env'
  lines = File.read(filename).split("\n")
  lines.reject!(&:empty?)
  lines.reject! { |l| l[0] == '#' }
  lines.reject! { |l| !l.include?('=') || l.split('=').first.to_s == '' }
  lines
end