Module: RequireEnv

Defined in:
lib/require_env.rb,
lib/require_env/missing.rb,
lib/require_env/version.rb

Defined Under Namespace

Classes: Missing

Constant Summary collapse

VERSION =
'1.2.0'

Class Method Summary collapse

Class Method Details

.application_environmentObject



55
56
57
# File 'lib/require_env.rb', line 55

def self.application_environment
  @application_environment ||= ENV['RAILS_ENV']
end

.application_environment=(value) ⇒ Object



59
60
61
# File 'lib/require_env.rb', line 59

def self.application_environment=(value)
  @application_environment = value
end

.check(*files) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/require_env.rb', line 6

def self.check(*files)
  check_multiple_requirements(files.map do |file|
    requirements = requirements_from_file(file)
    env_requirements = requirements[application_environment] || requirements[fallback_environment]
    if env_requirements.nil?
      raise ArgumentError.new("#{file} does not define anything for environment: #{application_environment}")
    end
    [file, env_requirements]
  end)
end

.check_multiple_requirements(multiple_requirements) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/require_env.rb', line 25

def self.check_multiple_requirements(multiple_requirements)
  missing_requirements = multiple_requirements.map do |file, requirements|
    missing = check_requirements(requirements)
    if missing.present?
      [file, missing]
    end
  end.compact

  if missing_requirements.present?
    raise RequireEnv::Missing.new(missing_requirements)
  end
end

.check_requirements(requirements) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/require_env.rb', line 38

def self.check_requirements(requirements)
  requirements.map do |key, value|
    if ENV.has_key?(key) || ENV.has_key?(key.split('_IF_').first)
      next nil
    elsif value
      ENV[key] = value.to_s
      next nil
    elsif key.include?('_IF_')
      if (condition = ENV[key.split('_IF_').last]) && condition != 'false'
        next key.split('_IF_').first
      end
    else
      next key
    end
  end.compact
end

.fallback_environmentObject



63
64
65
# File 'lib/require_env.rb', line 63

def self.fallback_environment
  @fallback_environment ||= nil
end

.fallback_environment=(value) ⇒ Object



66
67
68
# File 'lib/require_env.rb', line 66

def self.fallback_environment=(value)
  @fallback_environment = value
end

.requirements_from_file(file) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/require_env.rb', line 17

def self.requirements_from_file(file)
  if File.exist?(file)
    SafeYAML.load(ERB.new(File.read(file)).result)
  else
    raise ArgumentError.new("File not found: #{file}")
  end
end