Module: Unenviable
- Defined in:
- lib/unenviable.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
Instance Attribute Summary collapse
-
#env_list ⇒ Object
writeonly
Sets the attribute env_list.
Class Method Summary collapse
- .check ⇒ Object
- .described?(key) ⇒ Boolean
- .env_descriptions=(env_list) ⇒ Object
- .env_descriptions_file_location ⇒ Object
- .generate ⇒ Object
- .generate_dotenv_lines ⇒ Object
- .install_wrapper ⇒ Object
Instance Attribute Details
#env_list=(value) ⇒ Object (writeonly)
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 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
41 42 43 |
# File 'lib/unenviable.rb', line 41 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
45 46 47 48 49 |
# File 'lib/unenviable.rb', line 45 def self.generate File.open('.env', 'wb') do |f| generate_dotenv_lines.each { |l| f.write(l + "\n") } end end |
.generate_dotenv_lines ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/unenviable.rb', line 51 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 |
# File 'lib/unenviable.rb', line 35 def self.install_wrapper wrapper = Unenviable::ENVWrapper.new Object.send(:remove_const, :ENV) Object.const_set(:ENV, wrapper) end |