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 CHANGED
@@ -4,5 +4,10 @@ module Foreman
4
4
 
5
5
  class AppDoesNotExist < Exception; end
6
6
 
7
+ # load contents of env_file into ENV
8
+ def self.load_env!(env_file = './.env')
9
+ require 'foreman/engine'
10
+ Foreman::Engine.load_env!(env_file)
11
+ end
7
12
  end
8
13
 
@@ -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
- @environment.each { |k,v| ENV[k] = v }
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
- def read_environment_files(filenames)
179
- environment = {}
182
+ module Env
183
+ attr_reader :environment
180
184
 
181
- (filenames || "").split(",").map(&:strip).each do |filename|
182
- error "No such file: #{filename}" unless File.exists?(filename)
183
- environment.merge!(read_environment(filename))
184
- end
185
+ def read_environment_files(filenames)
186
+ environment = {}
185
187
 
186
- environment.merge!(read_environment(".env")) unless filenames
187
- environment
188
- end
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
- def read_environment(filename)
191
- return {} unless File.exists?(filename)
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
- File.read(filename).split("\n").inject({}) do |hash, line|
194
- if line =~ /\A([A-Za-z_0-9]+)=(.*)\z/
195
- hash[$1] = $2
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
- hash
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
@@ -1,5 +1,5 @@
1
1
  module Foreman
2
2
 
3
- VERSION = "0.26.1"
3
+ VERSION = "0.27.0"
4
4
 
5
5
  end
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.26.1
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-11-10 00:00:00.000000000Z
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: &70198523224520 !ruby/object:Gem::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: *70198523224520
24
+ version_requirements: *70283570808260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: thor
27
- requirement: &70198523222660 !ruby/object:Gem::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: *70198523222660
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: 1174772449169708218
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: 1174772449169708218
116
+ hash: -3613490576676930257
117
117
  requirements: []
118
118
  rubyforge_project:
119
119
  rubygems_version: 1.8.10