foreman 0.26.1 → 0.27.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|