figaro 0.5.0 → 0.5.1
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/figaro.gemspec +1 -1
- data/lib/figaro.rb +1 -0
- data/lib/figaro/tasks.rake +1 -4
- data/lib/figaro/tasks.rb +14 -0
- data/spec/figaro/tasks_spec.rb +45 -27
- data/spec/figaro_spec.rb +24 -10
- metadata +5 -4
data/figaro.gemspec
CHANGED
data/lib/figaro.rb
CHANGED
data/lib/figaro/tasks.rake
CHANGED
@@ -1,9 +1,6 @@
|
|
1
1
|
namespace :figaro do
|
2
2
|
desc "Configure Heroku according to application.yml"
|
3
3
|
task :heroku, [:app] => :environment do |_, args|
|
4
|
-
|
5
|
-
rails_env = Kernel.system("heroku config:get RAILS_ENV#{app}").presence
|
6
|
-
Rails.env = rails_env if rails_env
|
7
|
-
Kernel.system("heroku config:add #{Figaro.vars}#{app}")
|
4
|
+
Figaro::Tasks.heroku(args[:app])
|
8
5
|
end
|
9
6
|
end
|
data/lib/figaro/tasks.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "open3"
|
2
|
+
|
3
|
+
module Figaro
|
4
|
+
module Tasks
|
5
|
+
def self.heroku(app = nil)
|
6
|
+
with_app = app ? " --app #{app}" : ""
|
7
|
+
|
8
|
+
rails_env = Open3.capture2("heroku config:get RAILS_ENV#{with_app}")
|
9
|
+
vars = Figaro.vars(rails_env.presence)
|
10
|
+
|
11
|
+
Open3.capture2("heroku config:add #{vars}#{with_app}")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/spec/figaro/tasks_spec.rb
CHANGED
@@ -1,43 +1,61 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe
|
4
|
-
describe "
|
5
|
-
|
6
|
-
|
7
|
-
ENV["RAILS_ENV"] = "development"
|
8
|
-
end
|
3
|
+
describe Figaro::Tasks do
|
4
|
+
describe ".heroku" do
|
5
|
+
it "configures Heroku" do
|
6
|
+
Figaro.stub(:vars => "FOO=bar")
|
9
7
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
8
|
+
Open3.should_receive(:capture2).once.with("heroku config:get RAILS_ENV").
|
9
|
+
and_return("development")
|
10
|
+
Open3.should_receive(:capture2).once.with("heroku config:add FOO=bar")
|
14
11
|
|
15
|
-
|
16
|
-
Figaro.stub(:env => {"HELLO" => "world", "FOO" => "bar"})
|
17
|
-
Kernel.stub(:system).with("heroku config:get RAILS_ENV").and_return("development")
|
18
|
-
Kernel.should_receive(:system).once.with("heroku config:add FOO=bar HELLO=world")
|
19
|
-
task.invoke
|
12
|
+
Figaro::Tasks.heroku
|
20
13
|
end
|
21
14
|
|
22
15
|
it "configures a specific Heroku app" do
|
23
|
-
Figaro.stub(:
|
24
|
-
|
25
|
-
|
26
|
-
|
16
|
+
Figaro.stub(:vars => "FOO=bar")
|
17
|
+
|
18
|
+
Open3.should_receive(:capture2).once.
|
19
|
+
with("heroku config:get RAILS_ENV --app my-app").
|
20
|
+
and_return("development")
|
21
|
+
Open3.should_receive(:capture2).once.
|
22
|
+
with("heroku config:add FOO=bar --app my-app")
|
23
|
+
|
24
|
+
Figaro::Tasks.heroku("my-app")
|
27
25
|
end
|
28
26
|
|
29
27
|
it "respects the Heroku's remote Rails environment" do
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
Open3.stub(:capture2).with("heroku config:get RAILS_ENV").
|
29
|
+
and_return("production")
|
30
|
+
|
31
|
+
Figaro.should_receive(:vars).once.with("production").and_return("FOO=bar")
|
32
|
+
Open3.should_receive(:capture2).once.with("heroku config:add FOO=bar")
|
33
|
+
|
34
|
+
Figaro::Tasks.heroku
|
34
35
|
end
|
35
36
|
|
36
37
|
it "defaults to the local Rails environment if not set remotely" do
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
Open3.stub(:capture2).with("heroku config:get RAILS_ENV").
|
39
|
+
and_return("\n")
|
40
|
+
|
41
|
+
Figaro.should_receive(:vars).once.with(nil).and_return("FOO=bar")
|
42
|
+
Open3.should_receive(:capture2).once.with("heroku config:add FOO=bar")
|
43
|
+
|
44
|
+
Figaro::Tasks.heroku
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "figaro:heroku", :rake => true do
|
48
|
+
it "configures Heroku" do
|
49
|
+
Figaro::Tasks.should_receive(:heroku).once.with(nil)
|
50
|
+
|
51
|
+
task.invoke
|
52
|
+
end
|
53
|
+
|
54
|
+
it "configures a specific Heroku app" do
|
55
|
+
Figaro::Tasks.should_receive(:heroku).once.with("my-app")
|
56
|
+
|
57
|
+
task.invoke("my-app")
|
58
|
+
end
|
41
59
|
end
|
42
60
|
end
|
43
61
|
end
|
data/spec/figaro_spec.rb
CHANGED
@@ -3,29 +3,43 @@ require "spec_helper"
|
|
3
3
|
describe Figaro do
|
4
4
|
describe ".vars" do
|
5
5
|
it "dumps and sorts env" do
|
6
|
-
Figaro.stub(:
|
6
|
+
Figaro.stub(:env => Figaro::Env.from("HELLO" => "world", "FOO" => "bar"))
|
7
|
+
|
7
8
|
Figaro.vars.should == "FOO=bar HELLO=world"
|
8
9
|
end
|
9
10
|
|
10
11
|
it "allows access to a particular environment" do
|
11
|
-
Figaro.stub(:
|
12
|
-
|
13
|
-
Figaro.
|
12
|
+
Figaro.stub(:env).with("development").
|
13
|
+
and_return(Figaro::Env.from("HELLO" => "developers"))
|
14
|
+
Figaro.stub(:env).with("production").
|
15
|
+
and_return(Figaro::Env.from("HELLO" => "world"))
|
16
|
+
|
17
|
+
Figaro.vars("development").should == "HELLO=developers"
|
18
|
+
Figaro.vars("production").should == "HELLO=world"
|
14
19
|
end
|
15
20
|
end
|
16
21
|
|
17
22
|
describe ".env" do
|
18
|
-
it "
|
19
|
-
|
20
|
-
|
21
|
-
Figaro.env.
|
22
|
-
ENV.delete("HELLO")
|
23
|
+
it "is a Figaro env instance" do
|
24
|
+
Figaro.stub(:raw => {"FOO" => "bar"})
|
25
|
+
|
26
|
+
Figaro.env.should be_a(Figaro::Env)
|
23
27
|
end
|
24
28
|
|
25
29
|
it "allows access to a particular environment" do
|
26
|
-
Figaro.stub(:raw
|
30
|
+
Figaro.stub(:raw).and_return(
|
31
|
+
"development" => {"HELLO" => "developers"},
|
32
|
+
"production" => {"HELLO" => "world"}
|
33
|
+
)
|
34
|
+
|
27
35
|
Figaro.env(:development).should == {"HELLO" => "developers"}
|
28
36
|
Figaro.env(:production).should == {"HELLO" => "world"}
|
29
37
|
end
|
38
|
+
|
39
|
+
it "stringifies keys and values" do
|
40
|
+
Figaro.stub(:raw).and_return(:LUFTBALLOONS => 99)
|
41
|
+
|
42
|
+
Figaro.env.should == {"LUFTBALLOONS" => "99"}
|
43
|
+
end
|
30
44
|
end
|
31
45
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: figaro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
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:
|
12
|
+
date: 2013-01-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -136,6 +136,7 @@ files:
|
|
136
136
|
- lib/figaro/env.rb
|
137
137
|
- lib/figaro/railtie.rb
|
138
138
|
- lib/figaro/tasks.rake
|
139
|
+
- lib/figaro/tasks.rb
|
139
140
|
- lib/generators/figaro/install/install_generator.rb
|
140
141
|
- lib/generators/figaro/install/templates/application.yml
|
141
142
|
- spec/figaro/env_spec.rb
|
@@ -157,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
157
158
|
version: '0'
|
158
159
|
segments:
|
159
160
|
- 0
|
160
|
-
hash:
|
161
|
+
hash: -996973026754623645
|
161
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
163
|
none: false
|
163
164
|
requirements:
|
@@ -166,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
167
|
version: '0'
|
167
168
|
segments:
|
168
169
|
- 0
|
169
|
-
hash:
|
170
|
+
hash: -996973026754623645
|
170
171
|
requirements: []
|
171
172
|
rubyforge_project:
|
172
173
|
rubygems_version: 1.8.24
|