envyable 1.1.1 → 1.2.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 +4 -4
- data/.gitignore +1 -0
- data/README.md +18 -7
- data/lib/envyable.rb +1 -1
- data/lib/envyable/cli.rb +6 -0
- data/lib/envyable/loader.rb +2 -2
- data/lib/envyable/version.rb +1 -1
- data/spec/envyable/cli_spec.rb +23 -0
- data/spec/spec_helper.rb +16 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2fbd50432fb934f5ea104f0d132571f52faae369
|
4
|
+
data.tar.gz: 3a9c3525fc21bed5cca528df0f940c3c082471e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fa0fc79aa27d5f66cc7245cf9e93fb31f92624776f75bc99dd218100494937afdb3ce2191f564c7aff4b63f342c6d83c160f0e5d18abfb3732ade2bbc112588
|
7
|
+
data.tar.gz: fa43e0f9fe688c5ca72207718fbad81c04446815e542e15db7642314dcbf9b9207a7ac701bbf72af7367c7791161f6c6ba16e4b0530d479dfb00418bdcf45576
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -23,13 +23,11 @@ Or install it yourself as:
|
|
23
23
|
Once the gem is included in your project, you can then use it to generate the
|
24
24
|
default required files. Just run:
|
25
25
|
|
26
|
-
|
27
|
-
$ envyable install
|
28
|
-
```
|
26
|
+
$ envyable install
|
29
27
|
|
30
28
|
and you will get a `config` directory containing an `env.yml` and a
|
31
29
|
`env.yml.example` file. If you have a `.gitignore` file this will also append
|
32
|
-
the line
|
30
|
+
the line:
|
33
31
|
|
34
32
|
```yaml
|
35
33
|
/config/env.yml
|
@@ -37,6 +35,15 @@ the line
|
|
37
35
|
|
38
36
|
to your config so that you do not check in `/config/env.yml`.
|
39
37
|
|
38
|
+
If you have [Spring](https://github.com/rails/spring) bundled with your
|
39
|
+
application this will append the following line to `/config/spring.rb`:
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
Spring.watch 'config/env.yml'
|
43
|
+
```
|
44
|
+
|
45
|
+
If the file `/config/spring.rb` does not exist, it will be created.
|
46
|
+
|
40
47
|
## Usage
|
41
48
|
|
42
49
|
### YAML file
|
@@ -51,11 +58,11 @@ test:
|
|
51
58
|
|
52
59
|
### Rails
|
53
60
|
|
54
|
-
Once installed in a Rails app, add your yaml file at `config/env.yml`. The gem will load the correct environment on initialization of the application.
|
61
|
+
Once installed in a Rails app, add your yaml file at `config/env.yml`. The gem will load the correct environment on initialization of the application. If you are using Spring to load your Rails application, [add `config/env.yml` to Spring's watch list](https://github.com/rails/spring#watching-files-and-directories).
|
55
62
|
|
56
63
|
### Load Immediately
|
57
64
|
|
58
|
-
If you have gems that require variables to be set earlier
|
65
|
+
If you have gems that require variables to be set earlier then place `envyable` in the `Gemfile` before those gems and require `envyable/rails-now`:
|
59
66
|
```
|
60
67
|
gem 'envyable', require: 'envyable/rails-now'
|
61
68
|
gem 'other-gem-that-requires-env-variables'
|
@@ -76,7 +83,11 @@ Envyable.load('config/env.yml')
|
|
76
83
|
|
77
84
|
### Version control
|
78
85
|
|
79
|
-
It is not recommended that you check the yaml file in to version control. Personally, I like to check in a `env.yml.example` file that shows the required keys, but does not include any credentials.
|
86
|
+
It is not recommended that you check the yaml file in to version control. Personally, I like to check in a `env.yml.example` file that shows the required keys, but does not include any credentials. If you generate your Envyable files using the installer, `config/env.yml` will be added to your `.gitignore` file.
|
87
|
+
|
88
|
+
## Troubleshooting
|
89
|
+
|
90
|
+
If your ENV values don't update when you modify `config/env.yml`, verify whether you have Spring (or another application preloader) that isn't configured to watch and reload when you update values. You should try configuring the preloader or just restarting it.
|
80
91
|
|
81
92
|
## Contributing
|
82
93
|
|
data/lib/envyable.rb
CHANGED
data/lib/envyable/cli.rb
CHANGED
@@ -15,6 +15,12 @@ module Envyable
|
|
15
15
|
"\n# Don't check in credentials \nconfig/env.yml"
|
16
16
|
end
|
17
17
|
end
|
18
|
+
if File.exist?("#{destination_root}/bin/spring")
|
19
|
+
create_file("config/spring.rb") unless File.exist?("#{destination_root}/config/spring.rb")
|
20
|
+
append_to_file("config/spring.rb") do
|
21
|
+
"\nSpring.watch 'config/env.yml'"
|
22
|
+
end
|
23
|
+
end
|
18
24
|
end
|
19
25
|
end
|
20
26
|
end
|
data/lib/envyable/loader.rb
CHANGED
@@ -13,7 +13,7 @@ module Envyable
|
|
13
13
|
# resides.
|
14
14
|
# loadable - a Hash or hashlike structure that the yaml file variables
|
15
15
|
# should be loaded into (default: ENV).
|
16
|
-
def initialize(path, loadable=ENV)
|
16
|
+
def initialize(path, loadable = ENV)
|
17
17
|
@path = path
|
18
18
|
@loadable = loadable
|
19
19
|
end
|
@@ -28,7 +28,7 @@ module Envyable
|
|
28
28
|
# load('production')
|
29
29
|
#
|
30
30
|
# Returns nothing.
|
31
|
-
def load(environment='development')
|
31
|
+
def load(environment = 'development')
|
32
32
|
if @yml ||= load_yml
|
33
33
|
@yml.each { |key, value| set_value(key, value) }
|
34
34
|
if @yml[environment]
|
data/lib/envyable/version.rb
CHANGED
data/spec/envyable/cli_spec.rb
CHANGED
@@ -38,5 +38,28 @@ describe Envyable::CLI do
|
|
38
38
|
capture_io { cli.install }
|
39
39
|
File.readlines(gitignore).any? { |line| line == "config/env.yml" }.must_equal true
|
40
40
|
end
|
41
|
+
|
42
|
+
it "should create a file in config/spring.rb if it doesn't exist already" do
|
43
|
+
spring_rb = "#{cli.destination_root}/config/spring.rb"
|
44
|
+
cli = Envyable::CLI.new([], {}, :destination_root => destination_root(:with_spring_bin => true))
|
45
|
+
File.exist?(spring_rb).must_equal false
|
46
|
+
capture_io { cli.install }
|
47
|
+
File.exist?(spring_rb).must_equal true
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should add config/env.yml to Spring's watch list" do
|
51
|
+
spring_rb = "#{cli.destination_root}/config/spring.rb"
|
52
|
+
cli = Envyable::CLI.new([], {}, :destination_root => destination_root(:with_spring_bin => true))
|
53
|
+
capture_io { cli.install }
|
54
|
+
File.readlines(spring_rb).any? { |line| line == "Spring.watch 'config/env.yml'" }.must_equal true
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should add config/env.yml to Spring's watch list when spring.rb exists" do
|
58
|
+
spring_rb = "#{cli.destination_root}/config/spring.rb"
|
59
|
+
cli = Envyable::CLI.new([], {}, :destination_root => destination_root(:with_spring_bin => true, :with_spring_rb => true))
|
60
|
+
File.readlines(spring_rb).none? { |line| line == "Spring.watch 'config/env.yml'" }.must_equal true
|
61
|
+
capture_io { cli.install }
|
62
|
+
File.readlines(spring_rb).any? { |line| line == "Spring.watch 'config/env.yml'" }.must_equal true
|
63
|
+
end
|
41
64
|
end
|
42
65
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,16 +1,20 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'rubygems'
|
3
3
|
begin
|
4
|
-
require
|
5
|
-
require
|
4
|
+
require 'simplecov'
|
5
|
+
require 'codeclimate-test-reporter'
|
6
6
|
SimpleCov.start do
|
7
7
|
formatter SimpleCov::Formatter::MultiFormatter.new([
|
8
8
|
SimpleCov::Formatter::HTMLFormatter,
|
9
9
|
CodeClimate::TestReporter::Formatter
|
10
10
|
])
|
11
|
-
add_filter
|
11
|
+
add_filter '/spec/'
|
12
12
|
end
|
13
13
|
rescue LoadError
|
14
|
+
require 'logger'
|
15
|
+
logger = Logger.new('./log/test.log')
|
16
|
+
logger.info 'Couldn\'t load simplecov or codeclimate-test-reporter. Check ' \
|
17
|
+
'your dependencies.'
|
14
18
|
end
|
15
19
|
|
16
20
|
gem 'minitest'
|
@@ -19,8 +23,16 @@ require 'minitest/autorun'
|
|
19
23
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'envyable')
|
20
24
|
|
21
25
|
def destination_root(opts={})
|
22
|
-
dir = File.join(File.dirname(__FILE__),
|
26
|
+
dir = File.join(File.dirname(__FILE__), 'sandbox')
|
23
27
|
FileUtils.mkdir_p(dir)
|
24
28
|
FileUtils.touch("#{dir}/.gitignore") if opts[:with_gitignore]
|
29
|
+
if opts[:with_spring_rb]
|
30
|
+
FileUtils.mkdir_p("#{dir}/config")
|
31
|
+
FileUtils.touch("#{dir}/config/spring.rb")
|
32
|
+
end
|
33
|
+
if opts[:with_spring_bin]
|
34
|
+
FileUtils.mkdir_p("#{dir}/bin")
|
35
|
+
FileUtils.touch("#{dir}/bin/spring")
|
36
|
+
end
|
25
37
|
dir
|
26
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: envyable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Phil Nash
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|