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 +7 -0
- data/lib/envforcer.rb +59 -0
- data/lib/envforcer/version.rb +3 -0
- metadata +132 -0
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
|
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: []
|