Compare commits

...

13 Commits

Author SHA1 Message Date
David Dollar
914a1ee958 0.27.0 2011-12-05 15:46:40 -05:00
David Dollar
e1c2946718 add changelog 2011-12-05 15:46:22 -05:00
David Dollar
6160246da0 Merge pull request #103 from csquared/load_env_from_irb
Load env from irb
2011-12-05 12:37:05 -08:00
Chris Continanza
2e8030dbd4 refactor load_env to apply_environment 2011-12-05 12:36:23 -08:00
Chris Continanza
58e4cdafd7 rename load! to load_env! 2011-12-05 12:27:32 -08:00
Chris Continanza
44a5dff724 use ./.env as default 2011-12-05 11:37:51 -08:00
Chris Continanza
e33921f083 load contents from env file 2011-12-03 15:43:51 -08:00
Chris Continanza
79cf541ebe refactor engine to expose env methods 2011-12-03 15:43:07 -08:00
David Dollar
39ace26ae1 disable email notifications 2011-11-14 12:23:50 -05:00
David Dollar
c383359136 add travis config 2011-11-11 23:16:59 -05:00
David Dollar
a5e094353c 0.26.1 2011-11-10 15:02:19 -05:00
David Dollar
12720b4c12 fix colors during execution of single process 2011-11-10 15:02:09 -05:00
David Dollar
1c732a4658 add runit export to docs 2011-11-08 18:00:23 -05:00
10 changed files with 116 additions and 25 deletions

14
.travis.yml Normal file
View File

@@ -0,0 +1,14 @@
script: bundle exec rake spec
rvm:
- 1.8.7
- 1.9.2
- 1.9.3
notifications:
email: false
webhooks:
on_success: always
on_failure: always
urls:
- https://dx-helper.herokuapp.com/travis

11
Changelog Normal file
View File

@@ -0,0 +1,11 @@
0.26.1 12/05/2011 6160246da0fafe9cf8fde188d94bbc6babc667dc
==========================================================
Merge pull request #103 from csquared/load_env_from_irb [David Dollar]
refactor load_env to apply_environment [Chris Continanza]
rename load! to load_env! [Chris Continanza]
use ./.env as default [Chris Continanza]
load contents from env file [Chris Continanza]
refactor engine to expose env methods [Chris Continanza]
disable email notifications [David Dollar]
add travis config [David Dollar]

View File

@@ -1,7 +1,7 @@
PATH
remote: .
specs:
foreman (0.26.0)
foreman (0.27.0)
term-ansicolor (~> 1.0.5)
thor (>= 0.13.6)
@@ -42,7 +42,7 @@ GEM
diff-lcs (~> 1.1.2)
rspec-mocks (2.6.0)
rubyzip (0.9.4)
term-ansicolor (1.0.6)
term-ansicolor (1.0.7)
thor (0.14.6)
xml-simple (1.0.15)

View File

@@ -166,3 +166,22 @@ end
Dir[File.expand_path("../dist/**/*.rake", __FILE__)].each do |rake|
import rake
end
task :changelog do
timestamp = Time.now.utc.strftime('%m/%d/%Y')
sha = `git log | head -1`.split(' ').last
changelog = ["#{version} #{timestamp} #{sha}"]
changelog << ('=' * changelog[0].length)
changelog << ''
last_sha = `cat Changelog | head -1`.split(' ').last
shortlog = `git log #{last_sha}..HEAD --pretty=format:'%s [%an]'`
changelog << shortlog.split("\n")
changelog.concat ['', '', '']
old_changelog = File.read('Changelog')
File.open('Changelog', 'w') do |file|
file.write(changelog.join("\n"))
file.write(old_changelog)
end
end

View File

@@ -4,5 +4,10 @@ module Foreman
class AppDoesNotExist < Exception; end
# load contents of env_file into ENV
def self.load_env!(env_file = './.env')
require 'foreman/engine'
Foreman::Engine.load_env!(env_file)
end
end

View File

@@ -12,7 +12,6 @@ class Foreman::Engine
attr_reader :procfile
attr_reader :directory
attr_reader :environment
attr_reader :options
extend Term::ANSIColor
@@ -26,6 +25,11 @@ class Foreman::Engine
@environment = read_environment_files(options[:env])
end
def self.load_env!(env_file)
@environment = read_environment_files(env_file)
apply_environment!
end
def start
proctitle "ruby: foreman master"
termtitle "#{File.basename(@directory)} - foreman (#{processes.size} processes)"
@@ -42,8 +46,9 @@ class Foreman::Engine
end
def execute(name)
error "no such process: #{name}" unless procfile[name]
fork procfile[name]
error "no such process: #{name}" unless process = procfile[name]
process.color = next_color
fork process
trap("TERM") { puts "SIGTERM received"; terminate_gracefully }
trap("INT") { puts "SIGINT received"; terminate_gracefully }
@@ -72,7 +77,7 @@ private ######################################################################
end
def fork_individual(process, num, port)
@environment.each { |k,v| ENV[k] = v }
apply_environment!
ENV["PORT"] = port.to_s
ENV["PS"] = "#{process.name}.#{num}"
@@ -174,27 +179,37 @@ private ######################################################################
@current_color >= COLORS.length ? "" : COLORS[@current_color]
end
def read_environment_files(filenames)
environment = {}
module Env
attr_reader :environment
(filenames || "").split(",").map(&:strip).each do |filename|
error "No such file: #{filename}" unless File.exists?(filename)
environment.merge!(read_environment(filename))
end
def read_environment_files(filenames)
environment = {}
environment.merge!(read_environment(".env")) unless filenames
environment
end
def read_environment(filename)
return {} unless File.exists?(filename)
File.read(filename).split("\n").inject({}) do |hash, line|
if line =~ /\A([A-Za-z_0-9]+)=(.*)\z/
hash[$1] = $2
(filenames || "").split(",").map(&:strip).each do |filename|
error "No such file: #{filename}" unless File.exists?(filename)
environment.merge!(read_environment(filename))
end
hash
environment.merge!(read_environment(".env")) unless filenames
environment
end
def read_environment(filename)
return {} unless File.exists?(filename)
File.read(filename).split("\n").inject({}) do |hash, line|
if line =~ /\A([A-Za-z_0-9]+)=(.*)\z/
hash[$1] = $2
end
hash
end
end
def apply_environment!
@environment.each { |k,v| ENV[k] = v }
end
end
include Env
extend Env
end

View File

@@ -1,5 +1,5 @@
module Foreman
VERSION = "0.26.0"
VERSION = "0.27.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" "November 2011" "Foreman 0.25.0" "Foreman Manual"
.TH "FOREMAN" "1" "November 2011" "Foreman 0.26.0" "Foreman Manual"
.
.SH "NAME"
\fBforeman\fR \- manage Procfile\-based applications
@@ -85,6 +85,9 @@ bluepill
inittab
.
.IP "\(bu" 4
runit
.
.IP "\(bu" 4
upstart
.
.IP "" 0

View File

@@ -83,6 +83,8 @@ foreman currently supports the following output formats:
* inittab
* runit
* upstart
## INITTAB EXPORT

View File

@@ -8,4 +8,26 @@ describe Foreman do
it { should be_a String }
end
describe "::load_env!(env_file)" do
before do
FakeFS.activate!
end
after do
FakeFS.deactivate!
ENV['FOO'] = nil
end
it "should load env_file into ENV" do
File.open("/tmp/env1", "w") { |f| f.puts("FOO=bar") }
Foreman.load_env!("/tmp/env1")
ENV['FOO'].should == 'bar'
end
it "should assume env_file in ./.env" do
File.open("./.env", "w") { |f| f.puts("FOO=bar") }
Foreman.load_env!
ENV['FOO'].should == 'bar'
end
end
end