foreman 0.26.1 → 0.27.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/lib/foreman.rb +5 -0
- data/lib/foreman/engine.rb +31 -17
- data/lib/foreman/version.rb +1 -1
- data/spec/foreman_spec.rb +22 -0
- metadata +8 -8
data/lib/foreman.rb
CHANGED
data/lib/foreman/engine.rb
CHANGED
@@ -12,7 +12,6 @@ class Foreman::Engine
|
|
12
12
|
|
13
13
|
attr_reader :procfile
|
14
14
|
attr_reader :directory
|
15
|
-
attr_reader :environment
|
16
15
|
attr_reader :options
|
17
16
|
|
18
17
|
extend Term::ANSIColor
|
@@ -26,6 +25,11 @@ class Foreman::Engine
|
|
26
25
|
@environment = read_environment_files(options[:env])
|
27
26
|
end
|
28
27
|
|
28
|
+
def self.load_env!(env_file)
|
29
|
+
@environment = read_environment_files(env_file)
|
30
|
+
apply_environment!
|
31
|
+
end
|
32
|
+
|
29
33
|
def start
|
30
34
|
proctitle "ruby: foreman master"
|
31
35
|
termtitle "#{File.basename(@directory)} - foreman (#{processes.size} processes)"
|
@@ -73,7 +77,7 @@ private ######################################################################
|
|
73
77
|
end
|
74
78
|
|
75
79
|
def fork_individual(process, num, port)
|
76
|
-
|
80
|
+
apply_environment!
|
77
81
|
|
78
82
|
ENV["PORT"] = port.to_s
|
79
83
|
ENV["PS"] = "#{process.name}.#{num}"
|
@@ -175,27 +179,37 @@ private ######################################################################
|
|
175
179
|
@current_color >= COLORS.length ? "" : COLORS[@current_color]
|
176
180
|
end
|
177
181
|
|
178
|
-
|
179
|
-
environment
|
182
|
+
module Env
|
183
|
+
attr_reader :environment
|
180
184
|
|
181
|
-
(filenames
|
182
|
-
|
183
|
-
environment.merge!(read_environment(filename))
|
184
|
-
end
|
185
|
+
def read_environment_files(filenames)
|
186
|
+
environment = {}
|
185
187
|
|
186
|
-
|
187
|
-
|
188
|
-
|
188
|
+
(filenames || "").split(",").map(&:strip).each do |filename|
|
189
|
+
error "No such file: #{filename}" unless File.exists?(filename)
|
190
|
+
environment.merge!(read_environment(filename))
|
191
|
+
end
|
189
192
|
|
190
|
-
|
191
|
-
|
193
|
+
environment.merge!(read_environment(".env")) unless filenames
|
194
|
+
environment
|
195
|
+
end
|
196
|
+
|
197
|
+
def read_environment(filename)
|
198
|
+
return {} unless File.exists?(filename)
|
192
199
|
|
193
|
-
|
194
|
-
|
195
|
-
|
200
|
+
File.read(filename).split("\n").inject({}) do |hash, line|
|
201
|
+
if line =~ /\A([A-Za-z_0-9]+)=(.*)\z/
|
202
|
+
hash[$1] = $2
|
203
|
+
end
|
204
|
+
hash
|
196
205
|
end
|
197
|
-
|
206
|
+
end
|
207
|
+
|
208
|
+
def apply_environment!
|
209
|
+
@environment.each { |k,v| ENV[k] = v }
|
198
210
|
end
|
199
211
|
end
|
200
212
|
|
213
|
+
include Env
|
214
|
+
extend Env
|
201
215
|
end
|
data/lib/foreman/version.rb
CHANGED
data/spec/foreman_spec.rb
CHANGED
@@ -8,4 +8,26 @@ describe Foreman do
|
|
8
8
|
it { should be_a String }
|
9
9
|
end
|
10
10
|
|
11
|
+
describe "::load_env!(env_file)" do
|
12
|
+
before do
|
13
|
+
FakeFS.activate!
|
14
|
+
end
|
15
|
+
|
16
|
+
after do
|
17
|
+
FakeFS.deactivate!
|
18
|
+
ENV['FOO'] = nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should load env_file into ENV" do
|
22
|
+
File.open("/tmp/env1", "w") { |f| f.puts("FOO=bar") }
|
23
|
+
Foreman.load_env!("/tmp/env1")
|
24
|
+
ENV['FOO'].should == 'bar'
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should assume env_file in ./.env" do
|
28
|
+
File.open("./.env", "w") { |f| f.puts("FOO=bar") }
|
29
|
+
Foreman.load_env!
|
30
|
+
ENV['FOO'].should == 'bar'
|
31
|
+
end
|
32
|
+
end
|
11
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.27.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-12-05 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: term-ansicolor
|
16
|
-
requirement: &
|
16
|
+
requirement: &70283570808260 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.0.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70283570808260
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: thor
|
27
|
-
requirement: &
|
27
|
+
requirement: &70283570807760 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: 0.13.6
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70283570807760
|
36
36
|
description: Process manager for applications with multiple components
|
37
37
|
email: ddollar@gmail.com
|
38
38
|
executables:
|
@@ -104,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
104
|
version: '0'
|
105
105
|
segments:
|
106
106
|
- 0
|
107
|
-
hash:
|
107
|
+
hash: -3613490576676930257
|
108
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
109
|
none: false
|
110
110
|
requirements:
|
@@ -113,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
113
|
version: '0'
|
114
114
|
segments:
|
115
115
|
- 0
|
116
|
-
hash:
|
116
|
+
hash: -3613490576676930257
|
117
117
|
requirements: []
|
118
118
|
rubyforge_project:
|
119
119
|
rubygems_version: 1.8.10
|