envforcer 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2073628277a5912399a39862d83d977a118bb8a1
4
+ data.tar.gz: 9b2e90bacbfb66fb2fb341edbee7738ac8b5e892
5
+ SHA512:
6
+ metadata.gz: b2b03dd789aef09226e23908b0a8c9f4e3f5f0a964b9059d153d93c9339d60836e890b259b1abe97ae6a6e15bcfd819a8811c2e5ebe4dad3f73978fc38400bf2
7
+ data.tar.gz: d4aa2835beda1913866e01eab02972ea086f2662c0856dc4e1842c91e776c259562abd027132dff54ad6773fdf471d0b7f86d4565a7996bef7329983c84d6ada
data/lib/envforcer.rb ADDED
@@ -0,0 +1,59 @@
1
+ require 'envforcer/version'
2
+ require 'yaml'
3
+ require 'rails'
4
+
5
+ class MissingEnvKey < StandardError; end
6
+
7
+ module EnvEnforcer
8
+ class << self
9
+ def call
10
+ # handle missing config file
11
+ fail MissingEnvKey, error_message if missing_keys.size > 0
12
+ end
13
+
14
+ private
15
+
16
+ def error_message
17
+ "Missing #{missing_keys.size} ENV key(s): #{missing_keys.join(',')}"
18
+ end
19
+
20
+ def config_file
21
+ path = root.join('.envforcer.yml')
22
+
23
+ @config_file ||=
24
+ if File.exist?(path)
25
+ YAML.load_file(path)
26
+ else
27
+ fail 'No .envforcer.yml file found.'
28
+ end
29
+ end
30
+
31
+ def root
32
+ Rails.root || Pathname.new(ENV['RAILS_ROOT'] || Dir.pwd)
33
+ end
34
+
35
+ def defined_keys
36
+ ENV.keys.map(&:to_s)
37
+ end
38
+
39
+ def default_keys
40
+ config_file['default'] || []
41
+ end
42
+
43
+ def environment_keys
44
+ config_file[ENV['RAILS_ENV']] || []
45
+ end
46
+
47
+ def required_keys
48
+ (default_keys + environment_keys).compact
49
+ end
50
+
51
+ def missing_keys
52
+ required_keys - defined_keys
53
+ end
54
+ end
55
+
56
+ class Railtie < ::Rails::Railtie
57
+ config.after_initialize { EnvEnforcer.call }
58
+ end
59
+ end
@@ -0,0 +1,3 @@
1
+ module EnvEnforcer
2
+ VERSION = '1.0.0'
3
+ end
metadata ADDED
@@ -0,0 +1,132 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: envforcer
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Adam Steel
8
+ - Joel Hawksley
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-12-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: bundler
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.10'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.10'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '10.0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '10.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rails
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 4.2.1
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 4.2.1
70
+ - !ruby/object:Gem::Dependency
71
+ name: pry
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rubocop
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ description: Storing configuration in the environment is one of the tenets of a twelve-factor
99
+ app. However, problems arise when required environment variables aren't set.
100
+ email:
101
+ - adamgsteel@gmail.com
102
+ - joel@hawksley.org
103
+ executables: []
104
+ extensions: []
105
+ extra_rdoc_files: []
106
+ files:
107
+ - lib/envforcer.rb
108
+ - lib/envforcer/version.rb
109
+ homepage: https://www.github.com/mojotech/envforcer
110
+ licenses: []
111
+ metadata: {}
112
+ post_install_message:
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubyforge_project:
128
+ rubygems_version: 2.4.3
129
+ signing_key:
130
+ specification_version: 4
131
+ summary: Enforce environment variable requirements.
132
+ test_files: []