Module: Unenviable
- Defined in:
- lib/unenviable.rb,
lib/unenviable/railtie.rb,
lib/unenviable/env_wrapper.rb
Overview
Handles loading a YAML file that will describe what ENV variables are necessary for a twelve-factor app in a specific environment.
Defined Under Namespace
Classes: ENVWrapper, Railtie
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Attribute Details
#env_list=(value) ⇒ Object
Sets the attribute env_list
11
12
13
|
# File 'lib/unenviable.rb', line 11
def env_list=(value)
@env_list = value
end
|
Class Method Details
.check ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/unenviable.rb', line 13
def self.check
load_env_descriptions unless @env_list
Dotenv.load if Gem::Specification::find_all_by_name('dotenv').any?
discrepancies = { required: [], optional: [], forbidden: [] }
@env_list.each do |var, details|
discrepancies[:required] << var if details[:required] && !ENV[var]
discrepancies[:optional] << var if !details[:required] && !details[:forbidden] && !ENV[var]
discrepancies[:forbidden] << var if details[:forbidden] && ENV[var]
end
discrepancies
end
|
.described?(key) ⇒ Boolean
46
47
48
|
# File 'lib/unenviable.rb', line 46
def self.described?(key)
@env_list.include?(key)
end
|
.env_descriptions=(env_list) ⇒ Object
31
32
33
|
# File 'lib/unenviable.rb', line 31
def self.env_descriptions=(env_list)
@env_list = env_list
end
|
.env_descriptions_file_location ⇒ Object
27
28
29
|
# File 'lib/unenviable.rb', line 27
def self.env_descriptions_file_location
'config/unenviable.yml'
end
|
.generate ⇒ Object
50
51
52
53
54
|
# File 'lib/unenviable.rb', line 50
def self.generate
File.open('.env', 'wb') do |f|
generate_dotenv_lines.each { |l| f.write(l + "\n") }
end
end
|
.generate_dotenv_lines ⇒ Object
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/unenviable.rb', line 56
def self.generate_dotenv_lines
load_env_descriptions unless @env_list
lines = []
@env_list.each do |var, details|
lines << "# #{details[:description]}"
lines << "#{var}=#{details[:initial_value]}" if details[:required]
lines << "##{var}=#{details[:initial_value]}" unless details[:required]
lines << ''
end
lines
end
|
.install_wrapper ⇒ Object
35
36
37
38
39
40
|
# File 'lib/unenviable.rb', line 35
def self.install_wrapper
load_env_descriptions
wrapper = Unenviable::ENVWrapper.new
Object.send(:remove_const, :ENV)
Object.const_set(:ENV, wrapper)
end
|
.remove_wrapper ⇒ Object
42
43
44
|
# File 'lib/unenviable.rb', line 42
def self.remove_wrapper
ENV.restore_saved if ENV.respond_to?(:close_wrapper)
end
|