envforcer 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []