dotenv 0.6.0 → 0.7.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.
- data/.gitignore +1 -0
- data/Changelog.md +10 -4
- data/Rakefile +14 -6
- data/lib/dotenv-rails.rb +0 -1
- data/lib/dotenv.rb +16 -6
- data/lib/dotenv/environment.rb +1 -1
- data/lib/dotenv/railtie.rb +0 -19
- data/lib/dotenv/version.rb +1 -1
- data/spec/dotenv/environment_spec.rb +6 -9
- data/spec/dotenv_spec.rb +39 -8
- metadata +2 -2
data/.gitignore
CHANGED
data/Changelog.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.7.0 - April 15, 2013
|
4
|
+
|
5
|
+
* Remove deprectated autoloading. Upgrade to 0.6 first and fix any warnings.
|
6
|
+
|
7
|
+
* Add Dotenv.load! which raises Errno::ENOENT if the file does not exist
|
8
|
+
|
3
9
|
## 0.6.0 - Mar 22, 2013
|
4
10
|
|
5
11
|
* Add dotenv-rails gem for autoloading in a Rails app
|
@@ -8,13 +14,13 @@
|
|
8
14
|
|
9
15
|
* Support for double quotes
|
10
16
|
|
11
|
-
|
12
|
-
|
13
|
-
|
17
|
+
A="some value"
|
18
|
+
B="with \"escaped\" quotes"
|
19
|
+
C="and newline\n expansion"
|
14
20
|
|
15
21
|
* Support for pow-style variables prefixed with export
|
16
22
|
|
17
|
-
|
23
|
+
export VARIABLE="some value"
|
18
24
|
|
19
25
|
[Full Changelog](https://github.com/bkeepers/dotenv/compare/v0.5.0...v0.6.0)
|
20
26
|
|
data/Rakefile
CHANGED
@@ -1,16 +1,24 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
|
3
3
|
require 'bundler/gem_helper'
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
|
5
|
+
namespace 'dotenv' do
|
6
|
+
Bundler::GemHelper.install_tasks :name => 'dotenv'
|
7
|
+
end
|
8
|
+
|
9
|
+
namespace 'dotenv-rails' do
|
10
|
+
class DotenvRailsGemHelper < Bundler::GemHelper
|
11
|
+
def guard_already_tagged; end # noop
|
12
|
+
def tag_version; end # noop
|
7
13
|
end
|
8
14
|
|
9
|
-
|
10
|
-
task :install => "#{name}:install"
|
11
|
-
task :release => "#{name}:release"
|
15
|
+
DotenvRailsGemHelper.install_tasks :name => 'dotenv-rails'
|
12
16
|
end
|
13
17
|
|
18
|
+
task :build => ["dotenv:build", 'dotenv-rails:build']
|
19
|
+
task :install => ["dotenv:install", 'dotenv-rails:install']
|
20
|
+
task :release => ["dotenv:release", 'dotenv-rails:release']
|
21
|
+
|
14
22
|
require 'rspec/core/rake_task'
|
15
23
|
|
16
24
|
desc "Run all specs"
|
data/lib/dotenv-rails.rb
CHANGED
data/lib/dotenv.rb
CHANGED
@@ -2,12 +2,22 @@ require 'dotenv/environment'
|
|
2
2
|
|
3
3
|
module Dotenv
|
4
4
|
def self.load(*filenames)
|
5
|
-
filenames
|
6
|
-
|
7
|
-
hash.merge Dotenv::Environment.new(filename).apply
|
5
|
+
default_if_empty(filenames).inject({}) do |hash, filename|
|
6
|
+
hash.merge(File.exists?(filename) ? Environment.new(filename).apply : {})
|
8
7
|
end
|
9
8
|
end
|
10
|
-
end
|
11
9
|
|
12
|
-
#
|
13
|
-
|
10
|
+
# same as `load`, but raises Errno::ENOENT if any files don't exist
|
11
|
+
def self.load!(*filenames)
|
12
|
+
load(
|
13
|
+
*default_if_empty(filenames).each do |filename|
|
14
|
+
raise(Errno::ENOENT.new(filename)) unless File.exists?(filename)
|
15
|
+
end
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
protected
|
20
|
+
def self.default_if_empty(filenames)
|
21
|
+
filenames.empty? ? (filenames << '.env') : filenames
|
22
|
+
end
|
23
|
+
end
|
data/lib/dotenv/environment.rb
CHANGED
data/lib/dotenv/railtie.rb
CHANGED
@@ -10,25 +10,6 @@ module Dotenv
|
|
10
10
|
Dotenv.load ".env.#{Rails.env}", '.env'
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
14
|
-
class << self
|
15
|
-
def no_warn!
|
16
|
-
@no_warn = true
|
17
|
-
end
|
18
|
-
|
19
|
-
def no_warn?
|
20
|
-
@no_warn
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
initializer 'dotenv', :group => :all do
|
25
|
-
unless self.class.no_warn?
|
26
|
-
warn <<-EOF
|
27
|
-
[DEPRECATION] Autoloading for dotenv has been moved to the `dotenv-rails` gem. Change your Gemfile to:
|
28
|
-
gem 'dotenv-rails', :groups => [:development, :test]
|
29
|
-
EOF
|
30
|
-
end
|
31
|
-
end
|
32
13
|
end
|
33
14
|
end
|
34
15
|
|
data/lib/dotenv/version.rb
CHANGED
@@ -8,6 +8,12 @@ describe Dotenv::Environment do
|
|
8
8
|
expect(subject['OPTION_A']).to eq('1')
|
9
9
|
expect(subject['OPTION_B']).to eq('2')
|
10
10
|
end
|
11
|
+
|
12
|
+
it 'fails if file does not exist' do
|
13
|
+
expect {
|
14
|
+
Dotenv::Environment.new('.does_not_exists')
|
15
|
+
}.to raise_error(Errno::ENOENT)
|
16
|
+
end
|
11
17
|
end
|
12
18
|
|
13
19
|
describe 'apply' do
|
@@ -21,15 +27,6 @@ describe Dotenv::Environment do
|
|
21
27
|
subject.apply
|
22
28
|
expect(ENV['OPTION_A']).to eq('predefined')
|
23
29
|
end
|
24
|
-
|
25
|
-
context 'when the file does not exist' do
|
26
|
-
subject { Dotenv::Environment.new('.env_does_not_exist') }
|
27
|
-
|
28
|
-
it 'fails silently' do
|
29
|
-
expect { subject.apply }.not_to raise_error
|
30
|
-
expect(ENV.keys).to eq(@env_keys)
|
31
|
-
end
|
32
|
-
end
|
33
30
|
end
|
34
31
|
|
35
32
|
it 'parses unquoted values' do
|
data/spec/dotenv_spec.rb
CHANGED
@@ -1,26 +1,24 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Dotenv do
|
4
|
-
|
5
|
-
|
6
|
-
describe 'load' do
|
4
|
+
shared_examples 'load' do
|
7
5
|
context 'with no args' do
|
6
|
+
let(:env_files) { [] }
|
7
|
+
|
8
8
|
it 'defaults to .env' do
|
9
9
|
Dotenv::Environment.should_receive(:new).with('.env').
|
10
10
|
and_return(mock(:apply => {}))
|
11
|
-
|
11
|
+
subject
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
context 'with multiple files' do
|
16
|
+
let(:env_files) { ['.env', fixture_path('plain.env')] }
|
17
|
+
|
16
18
|
let(:expected) do
|
17
19
|
{'OPTION_A' => '1', 'OPTION_B' => '2', 'DOTENV' => 'true'}
|
18
20
|
end
|
19
21
|
|
20
|
-
subject do
|
21
|
-
Dotenv.load('.env', env_path)
|
22
|
-
end
|
23
|
-
|
24
22
|
it 'loads all files' do
|
25
23
|
subject
|
26
24
|
expected.each do |key, value|
|
@@ -34,6 +32,39 @@ describe Dotenv do
|
|
34
32
|
end
|
35
33
|
end
|
36
34
|
|
35
|
+
describe 'load' do
|
36
|
+
subject { Dotenv.load(*env_files) }
|
37
|
+
|
38
|
+
it_behaves_like 'load'
|
39
|
+
|
40
|
+
context 'when the file does not exist' do
|
41
|
+
let(:env_files) { ['.env_does_not_exist'] }
|
42
|
+
|
43
|
+
it 'fails silently' do
|
44
|
+
expect { subject }.not_to raise_error
|
45
|
+
expect(ENV.keys).to eq(@env_keys)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe 'load!' do
|
51
|
+
subject { Dotenv.load!(*env_files) }
|
52
|
+
|
53
|
+
it_behaves_like 'load'
|
54
|
+
|
55
|
+
context 'when one file exists and one does not' do
|
56
|
+
let(:env_files) { ['.env', '.env_does_not_exist'] }
|
57
|
+
|
58
|
+
it 'raises an Errno::ENOENT error and does not load any files' do
|
59
|
+
expect do
|
60
|
+
expect do
|
61
|
+
subject
|
62
|
+
end.to raise_error(Errno::ENOENT)
|
63
|
+
end.to_not change { ENV.keys }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
37
68
|
def fixture_path(name)
|
38
69
|
File.join(File.expand_path('../fixtures', __FILE__), name)
|
39
70
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dotenv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|