envied 0.8.1 → 0.8.2
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 +4 -4
- data/.rspec +2 -0
- data/.travis.yml +17 -2
- data/CHANGELOG.md +28 -3
- data/README.md +3 -10
- data/Rakefile +1 -0
- data/envied.gemspec +6 -6
- data/examples/extensive_envfile +3 -3
- data/lib/envied.rb +2 -2
- data/lib/envied/configuration.rb +4 -1
- data/lib/envied/variable.rb +5 -0
- data/lib/envied/version.rb +1 -1
- data/spec/configuration_spec.rb +17 -0
- data/spec/envied_spec.rb +12 -0
- metadata +11 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d96082d1dc1fedf685dc01443f880342727f980
|
4
|
+
data.tar.gz: 15edf9b6d7d41abd5f694a534ff092e422cffa4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 34036deeaaf2f1bb339b645ea3f6680aa72323a2e0f3c71d84da130ac8fe2d2b685cdc5f208d5c84bb7b6008d108cc121256a0c9e4806f24512cad2aa77a2e9b
|
7
|
+
data.tar.gz: f6768c4c9a2deab86218b9579b41af302ecd18fdd0567a94041067b8d9c4bd4ef17337fa7b1738c78f1402b8ce67a3a4f2ca0cbc7ca8e361de4d3e276dfc4f5d
|
data/.rspec
CHANGED
data/.travis.yml
CHANGED
@@ -1,5 +1,20 @@
|
|
1
|
+
language: ruby
|
2
|
+
|
3
|
+
before_install:
|
4
|
+
- gem update --system
|
5
|
+
- gem install bundler
|
6
|
+
- gem update bundler
|
7
|
+
|
1
8
|
rvm:
|
2
9
|
- 1.9.3
|
3
10
|
- 2.0.0
|
4
|
-
- 2.1.
|
5
|
-
-
|
11
|
+
- 2.1.9
|
12
|
+
- 2.2.6
|
13
|
+
- 2.3.3
|
14
|
+
- 2.4.0
|
15
|
+
- jruby-9.0.5.0
|
16
|
+
- jruby-head
|
17
|
+
|
18
|
+
cache: bundler
|
19
|
+
sudo: false
|
20
|
+
fast_finish: true
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,39 @@
|
|
1
1
|
## unreleased
|
2
2
|
|
3
|
+
...
|
4
|
+
|
5
|
+
## 0.8.2 / 2017-02-21
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
* Rails 5 support
|
10
|
+
|
11
|
+
### Fixed
|
12
|
+
|
13
|
+
* Envfile: type string is also correctly implied when providing a default.
|
14
|
+
|
15
|
+
## 0.8.1 / 2014-10-18
|
16
|
+
|
3
17
|
### Added
|
4
18
|
|
5
19
|
* the `check` task uses ENV['ENVIED_GROUPS'] as default groups-option if present
|
6
20
|
|
7
21
|
### Fixed
|
8
22
|
|
23
|
+
* Rails: you can use ENVied now in config/application.rb and config/environments/*.rb
|
24
|
+
|
25
|
+
For existing projects: rerun the `init:rails`-task
|
26
|
+
|
9
27
|
* running `check:heroku` takes Heroku's value of ENVIED_GROUPS into account
|
10
28
|
* calling `enable_defaults!` without arguments now does what it says
|
11
29
|
|
30
|
+
### Deprecated
|
31
|
+
|
32
|
+
* doing `ENVied.require` in `config/initializers/envied.rb` (as previously generated by `init:rails`-task)
|
33
|
+
is not recommended anymore. It triggers a deprecation warning.
|
34
|
+
|
35
|
+
It's recommended to rerun the `init:rails`-task.
|
36
|
+
|
12
37
|
## 0.8.0 / 2014-10-04
|
13
38
|
|
14
39
|
### Added
|
@@ -16,7 +41,7 @@
|
|
16
41
|
* the `check:heroku:binstub` task uses ENV['HEROKU_APP'] as app-option if present
|
17
42
|
* the `check` and `check:heroku` task now have a `--quiet` option
|
18
43
|
|
19
|
-
This prevents output on STDOUT for a successful check.
|
44
|
+
This prevents output on STDOUT for a successful check.
|
20
45
|
Handy for wrapper-scripts:
|
21
46
|
|
22
47
|
# some bash-script 'ensure-env'
|
@@ -114,7 +139,7 @@
|
|
114
139
|
|
115
140
|
* groups added
|
116
141
|
|
117
|
-
This allows for more fine-grained requiring.
|
142
|
+
This allows for more fine-grained requiring.
|
118
143
|
See the section in the [README](https://github.com/eval/envied/tree/v0.4.0#groups).
|
119
144
|
|
120
145
|
* configuring is now simpler:
|
@@ -129,7 +154,7 @@
|
|
129
154
|
|
130
155
|
* Deprecate lowercase methods for uppercase ENV-variables.
|
131
156
|
|
132
|
-
`ENV['RACK_ENV']` is no longer accessible as `ENVied.rack_env`, only as `ENVied.RACK_ENV`.
|
157
|
+
`ENV['RACK_ENV']` is no longer accessible as `ENVied.rack_env`, only as `ENVied.RACK_ENV`.
|
133
158
|
This is not only what you would expect, but it also reduces the chance of clashing with existing class-methods.
|
134
159
|
|
135
160
|
## 0.3.0 / 2014-03-14
|
data/README.md
CHANGED
@@ -137,8 +137,8 @@ Note that 'easily bootstrap' is quite the opposite of 'fail-fast when not all EN
|
|
137
137
|
# Envfile
|
138
138
|
enable_defaults! { ENV['RACK_ENV'] == 'development' }
|
139
139
|
|
140
|
-
variable :FORCE_SSL, :
|
141
|
-
variable :PORT, :
|
140
|
+
variable :FORCE_SSL, :boolean, default: 'false'
|
141
|
+
variable :PORT, :integer, default: proc {|envied| envied.FORCE_SSL ? 443 : 80 }
|
142
142
|
```
|
143
143
|
|
144
144
|
Please remember that ENVied only **reads** from ENV; it doesn't mutate ENV.
|
@@ -152,13 +152,6 @@ As a rule of thumb you should only use defaults:
|
|
152
152
|
* See the [examples](/examples)-folder for a more extensive Envfile
|
153
153
|
* See [the Envfile](https://github.com/eval/bunny_drain/blob/c54d7d977afb5e23a92da7a2fd0d39f6a7e29bf1/Envfile) for the bunny_drain application
|
154
154
|
|
155
|
-
## Rails & Spring
|
156
|
-
|
157
|
-
Long story short: Checking the presence of ENV variables using `ENVied.require` *will* work (use the `init:rails`-task and you're all set).
|
158
|
-
What won't work: relying on values from `ENV` (and thus `ENVied`) somewhere in `config/**/*.rb` **if these values vary between environments**.
|
159
|
-
|
160
|
-
See this [wiki-page](https://github.com/eval/envied/wiki/Spring-gotchas) for more background info.
|
161
|
-
|
162
155
|
## Command-line interface
|
163
156
|
|
164
157
|
For help on a specific command, use `envied help <command>`.
|
@@ -184,7 +177,7 @@ Commands:
|
|
184
177
|
$ bundle exec envied extract
|
185
178
|
```
|
186
179
|
|
187
|
-
This comes in handy when you're not using ENVied yet. It will find all `ENV['
|
180
|
+
This comes in handy when you're not using ENVied yet. It will find all `ENV['KEY']` and `ENV.fetch('KEY')` statements in your project.
|
188
181
|
|
189
182
|
It assumes a standard project layout (see the default value for the globs-option).
|
190
183
|
|
data/Rakefile
CHANGED
data/envied.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require "envied/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "envied"
|
@@ -18,11 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.required_ruby_version =
|
22
|
-
spec.add_dependency "coercible",
|
23
|
-
spec.add_dependency "rack", "
|
21
|
+
spec.required_ruby_version = ">= 1.9.3"
|
22
|
+
spec.add_dependency "coercible", "~> 1.0"
|
23
|
+
spec.add_dependency "rack", ">= 1.4", (RUBY_VERSION < "2.2.2" ? "< 2" : "< 3")
|
24
24
|
spec.add_dependency "thor", "~> 0.15"
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.5"
|
26
26
|
spec.add_development_dependency "rake"
|
27
|
-
spec.add_development_dependency "rspec",
|
27
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
28
28
|
end
|
data/examples/extensive_envfile
CHANGED
@@ -10,8 +10,8 @@ enable_defaults!(¬_production_nor_ci)
|
|
10
10
|
# we want it to be present though; heck, we're using it in this file!
|
11
11
|
variable :RACK_ENV
|
12
12
|
|
13
|
-
variable :FORCE_SSL, :boolean, default: false
|
14
|
-
variable :PORT, :integer, default: 3000
|
13
|
+
variable :FORCE_SSL, :boolean, default: 'false'
|
14
|
+
variable :PORT, :integer, default: '3000'
|
15
15
|
# generate the default value using the value of PORT:
|
16
16
|
variable :PUBLIC_HOST_WITH_PORT, :string, default: proc {|envied| "localhost:#{envied.PORT}" }
|
17
17
|
|
@@ -27,7 +27,7 @@ end
|
|
27
27
|
group :not_ci do
|
28
28
|
# CI needs no puma-threads, and sidekiq-stuff etc.
|
29
29
|
# Define that here:
|
30
|
-
variable :MIN_THREADS, :integer, default: 1
|
30
|
+
variable :MIN_THREADS, :integer, default: '1'
|
31
31
|
# more...
|
32
32
|
end
|
33
33
|
|
data/lib/envied.rb
CHANGED
@@ -23,9 +23,9 @@ class ENVied
|
|
23
23
|
|
24
24
|
def self.env!(requested_groups, options = {})
|
25
25
|
@env = begin
|
26
|
-
config = options.fetch(:config) { Configuration.load }
|
26
|
+
@config = options.fetch(:config) { Configuration.load }
|
27
27
|
groups = required_groups(*requested_groups)
|
28
|
-
EnvProxy.new(config, groups: groups)
|
28
|
+
EnvProxy.new(@config, groups: groups)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
data/lib/envied/configuration.rb
CHANGED
@@ -33,7 +33,10 @@ class ENVied
|
|
33
33
|
@defaults_enabled
|
34
34
|
end
|
35
35
|
|
36
|
-
def variable(name,
|
36
|
+
def variable(name, *args)
|
37
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
38
|
+
type = args.first || :string
|
39
|
+
|
37
40
|
unless coercer.supported_type?(type)
|
38
41
|
raise ArgumentError,
|
39
42
|
"Variable type (of #{name}) should be one of #{coercer.supported_types}"
|
data/lib/envied/variable.rb
CHANGED
@@ -15,4 +15,9 @@ class ENVied::Variable
|
|
15
15
|
def default_value(*args)
|
16
16
|
default.respond_to?(:call) ? default[*args] : default
|
17
17
|
end
|
18
|
+
|
19
|
+
def ==(other)
|
20
|
+
self.class == other.class &&
|
21
|
+
[name, type, group, default] == [other.name, other.type, other.group, other.default]
|
22
|
+
end
|
18
23
|
end
|
data/lib/envied/version.rb
CHANGED
data/spec/configuration_spec.rb
CHANGED
@@ -6,8 +6,25 @@ describe ENVied::Configuration do
|
|
6
6
|
it { is_expected.to respond_to :defaults_enabled? }
|
7
7
|
|
8
8
|
describe '#variable' do
|
9
|
+
def with_envfile(&block)
|
10
|
+
@config = described_class.new(&block)
|
11
|
+
end
|
12
|
+
attr_reader :config
|
13
|
+
|
9
14
|
it 'results in an added variable' do
|
15
|
+
with_envfile do
|
16
|
+
variable :foo, :boolean
|
17
|
+
end
|
18
|
+
|
19
|
+
expect(config.variables).to include ENVied::Variable.new(:foo, :boolean)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'sets string as type when no type is given' do
|
23
|
+
with_envfile do
|
24
|
+
variable :bar, default: 'bar'
|
25
|
+
end
|
10
26
|
|
27
|
+
expect(config.variables).to include ENVied::Variable.new(:bar, :string, default: 'bar')
|
11
28
|
end
|
12
29
|
end
|
13
30
|
|
data/spec/envied_spec.rb
CHANGED
@@ -12,6 +12,7 @@ describe ENVied do
|
|
12
12
|
|
13
13
|
before do
|
14
14
|
reset_env
|
15
|
+
reset_envied_config
|
15
16
|
reset_configuration
|
16
17
|
end
|
17
18
|
|
@@ -23,6 +24,10 @@ describe ENVied do
|
|
23
24
|
ENVied.instance_eval { @env = nil }
|
24
25
|
end
|
25
26
|
|
27
|
+
def reset_envied_config
|
28
|
+
ENVied.instance_eval { @config = nil }
|
29
|
+
end
|
30
|
+
|
26
31
|
context 'configured' do
|
27
32
|
|
28
33
|
def unconfigured
|
@@ -78,6 +83,13 @@ describe ENVied do
|
|
78
83
|
expect(described_class).to_not respond_to :B
|
79
84
|
end
|
80
85
|
|
86
|
+
it 'sets ENVied.config' do
|
87
|
+
configured_with(a: :Integer).and_ENV({'a' => '1'})
|
88
|
+
envied_require
|
89
|
+
|
90
|
+
expect(ENVied.config).to_not be(nil)
|
91
|
+
end
|
92
|
+
|
81
93
|
context 'ENV contains not all configured variables' do
|
82
94
|
before { configured_with(a: :Integer).and_no_ENV }
|
83
95
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: envied
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gert Goet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coercible
|
@@ -28,16 +28,22 @@ dependencies:
|
|
28
28
|
name: rack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.4'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '3'
|
34
37
|
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
|
-
- - "
|
41
|
+
- - ">="
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: '1.4'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: thor
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -149,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
155
|
version: '0'
|
150
156
|
requirements: []
|
151
157
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.
|
158
|
+
rubygems_version: 2.6.8
|
153
159
|
signing_key:
|
154
160
|
specification_version: 4
|
155
161
|
summary: Ensure presence and type of ENV-variables
|