Compare commits

...

9 Commits

Author SHA1 Message Date
David Dollar
5689d75a87 0.44.0 2012-04-23 15:55:56 -04:00
David Dollar
1325b6750e make var output order repeatable 2012-04-23 15:53:59 -04:00
David Dollar
638005403f clean up file/directory interaction, add some tests 2012-04-23 15:50:23 -04:00
David Dollar
55f274532f Merge pull request #183 from technomancy/app_root
Look for .env and app_root in the same dir as the Procfile.
2012-04-23 12:20:10 -07:00
Phil Hagelberg
66f76c2036 Look for .env and app_root in the same dir as the Procfile. 2012-04-20 20:59:37 -07:00
David Dollar
865cabb525 update docs 2012-04-20 19:33:14 -04:00
David Dollar
7c3c4bc58f add more options to the start docs 2012-04-20 19:33:11 -04:00
David Dollar
2dbe8c733b update docs 2012-04-20 17:42:47 -04:00
David Dollar
84352b82cc changelog 2012-04-20 17:42:33 -04:00
10 changed files with 62 additions and 7 deletions

View File

@@ -1,3 +1,7 @@
## 0.43.0 (2012-04-20)
* wrap supervisord env vars in quotes [Raphael Randschau]
## 0.42.0 (2012-04-18)
* Move read_environment to a public class method. [Phil Hagelberg]

View File

@@ -1,7 +1,7 @@
PATH
remote: .
specs:
foreman (0.43.0)
foreman (0.44.0)
thor (>= 0.13.6)
GEM

View File

@@ -5,7 +5,7 @@ engine.procfile.entries.each do |process|
1.upto(self.concurrency[process.name]) do |num|
port = engine.port_for(process, num, self.port)
name = if (conc > 1); "#{process.name}-#{num}" else process.name; end
environment = (engine.environment.map{ |var,env| %{#{var.upcase}="#{env}"} } + [%{PORT="#{port}"}])
environment = (engine.environment.keys.sort.map{ |var| %{#{var.upcase}="#{engine.environment[var]}"} } + [%{PORT="#{port}"}])
app_name = "#{app}-#{name}"
app_names << app_name
%>

View File

@@ -83,7 +83,11 @@ private ######################################################################
end
def procfile
options[:procfile] || "Procfile"
case
when options[:procfile] then options[:procfile]
when options[:app_root] then File.expand_path(File.join(options[:app_root], "Procfile"))
else "Procfile"
end
end
def error(message)

View File

@@ -24,8 +24,10 @@ class Foreman::Engine
@procfile = Foreman::Procfile.new(procfile)
@directory = options[:app_root] || File.expand_path(File.dirname(procfile))
@options = options.dup
@environment = read_environment_files(options[:env])
@output_mutex = Mutex.new
@options[:env] ||= default_env
@environment = read_environment_files(@options[:env])
end
def start
@@ -214,7 +216,12 @@ private ######################################################################
environment.merge!(Foreman::Engine.read_environment(filename))
end
environment.merge!(Foreman::Engine.read_environment(".env")) unless filenames
environment
end
def default_env
env = File.join(directory, ".env")
File.exists?(env) ? env : ""
end
end

View File

@@ -1,5 +1,5 @@
module Foreman
VERSION = "0.43.0"
VERSION = "0.44.0"
end

View File

@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "FOREMAN" "1" "February 2012" "Foreman 0.42.0" "Foreman Manual"
.TH "FOREMAN" "1" "April 2012" "Foreman 0.43.0" "Foreman Manual"
.
.SH "NAME"
\fBforeman\fR \- manage Procfile\-based applications
@@ -35,6 +35,14 @@ The following options control how the application is run:
Specify the number of each process type to run\. The value passed in should be in the format \fBprocess=num,process=num\fR
.
.TP
\fB\-e\fR, \fB\-\-env\fR
Specify one or more \.env files to load
.
.TP
\fB\-f\fR, \fB\-\-procfile\fR
Specify an alternate Procfile to load, implies \fB\-d\fR at the Procfile root\.
.
.TP
\fB\-p\fR, \fB\-\-port\fR
Specify which port to use as the base for this application\. Should be a multiple of 1000\.
.

View File

@@ -30,6 +30,12 @@ The following options control how the application is run:
Specify the number of each process type to run. The value passed in
should be in the format `process=num,process=num`
* `-e`, `--env`:
Specify one or more .env files to load
* `-f`, `--procfile`:
Specify an alternate Procfile to load, implies `-d` at the Procfile root.
* `-p`, `--port`:
Specify which port to use as the base for this application. Should be
a multiple of 1000.

View File

@@ -34,6 +34,15 @@ describe "Foreman::CLI", :fakefs do
subject.start("alpha")
end
end
describe "with an alternate root" do
it "reads the Procfile from that root" do
write_procfile "/some/app/Procfile"
mock(Foreman::Procfile).new("/some/app/Procfile")
mock.instance_of(Foreman::Engine).start
foreman %{ start -d /some/app }
end
end
end
describe "export" do

View File

@@ -49,6 +49,14 @@ describe "Foreman::Engine", :fakefs do
end
end
describe "directories" do
it "has the directory default relative to the Procfile" do
write_procfile "/some/app/Procfile"
engine = Foreman::Engine.new("/some/app/Procfile")
engine.directory.should == "/some/app"
end
end
describe "environment" do
before(:each) do
write_procfile
@@ -97,6 +105,15 @@ describe "Foreman::Engine", :fakefs do
engine.environment.should == {"FOO"=>"qoo"}
engine.start
end
it "should be loaded relative to the Procfile" do
FileUtils.mkdir_p "/some/app"
File.open("/some/app/.env", "w") { |f| f.puts("FOO=qoo") }
write_procfile "/some/app/Procfile"
engine = Foreman::Engine.new("/some/app/Procfile")
engine.environment.should == {"FOO"=>"qoo"}
engine.start
end
end
describe "utf8" do