Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
914a1ee958 | ||
|
|
e1c2946718 | ||
|
|
6160246da0 | ||
|
|
2e8030dbd4 | ||
|
|
58e4cdafd7 | ||
|
|
44a5dff724 | ||
|
|
e33921f083 | ||
|
|
79cf541ebe | ||
|
|
39ace26ae1 | ||
|
|
c383359136 | ||
|
|
a5e094353c | ||
|
|
12720b4c12 | ||
|
|
1c732a4658 |
+14
@@ -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
|
||||||
@@ -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]
|
||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
PATH
|
PATH
|
||||||
remote: .
|
remote: .
|
||||||
specs:
|
specs:
|
||||||
foreman (0.26.0)
|
foreman (0.27.0)
|
||||||
term-ansicolor (~> 1.0.5)
|
term-ansicolor (~> 1.0.5)
|
||||||
thor (>= 0.13.6)
|
thor (>= 0.13.6)
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ GEM
|
|||||||
diff-lcs (~> 1.1.2)
|
diff-lcs (~> 1.1.2)
|
||||||
rspec-mocks (2.6.0)
|
rspec-mocks (2.6.0)
|
||||||
rubyzip (0.9.4)
|
rubyzip (0.9.4)
|
||||||
term-ansicolor (1.0.6)
|
term-ansicolor (1.0.7)
|
||||||
thor (0.14.6)
|
thor (0.14.6)
|
||||||
xml-simple (1.0.15)
|
xml-simple (1.0.15)
|
||||||
|
|
||||||
|
|||||||
@@ -166,3 +166,22 @@ end
|
|||||||
Dir[File.expand_path("../dist/**/*.rake", __FILE__)].each do |rake|
|
Dir[File.expand_path("../dist/**/*.rake", __FILE__)].each do |rake|
|
||||||
import rake
|
import rake
|
||||||
end
|
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
|
||||||
|
|||||||
@@ -4,5 +4,10 @@ module Foreman
|
|||||||
|
|
||||||
class AppDoesNotExist < Exception; end
|
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
|
end
|
||||||
|
|
||||||
|
|||||||
+36
-21
@@ -12,7 +12,6 @@ class Foreman::Engine
|
|||||||
|
|
||||||
attr_reader :procfile
|
attr_reader :procfile
|
||||||
attr_reader :directory
|
attr_reader :directory
|
||||||
attr_reader :environment
|
|
||||||
attr_reader :options
|
attr_reader :options
|
||||||
|
|
||||||
extend Term::ANSIColor
|
extend Term::ANSIColor
|
||||||
@@ -26,6 +25,11 @@ class Foreman::Engine
|
|||||||
@environment = read_environment_files(options[:env])
|
@environment = read_environment_files(options[:env])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.load_env!(env_file)
|
||||||
|
@environment = read_environment_files(env_file)
|
||||||
|
apply_environment!
|
||||||
|
end
|
||||||
|
|
||||||
def start
|
def start
|
||||||
proctitle "ruby: foreman master"
|
proctitle "ruby: foreman master"
|
||||||
termtitle "#{File.basename(@directory)} - foreman (#{processes.size} processes)"
|
termtitle "#{File.basename(@directory)} - foreman (#{processes.size} processes)"
|
||||||
@@ -42,8 +46,9 @@ class Foreman::Engine
|
|||||||
end
|
end
|
||||||
|
|
||||||
def execute(name)
|
def execute(name)
|
||||||
error "no such process: #{name}" unless procfile[name]
|
error "no such process: #{name}" unless process = procfile[name]
|
||||||
fork procfile[name]
|
process.color = next_color
|
||||||
|
fork process
|
||||||
|
|
||||||
trap("TERM") { puts "SIGTERM received"; terminate_gracefully }
|
trap("TERM") { puts "SIGTERM received"; terminate_gracefully }
|
||||||
trap("INT") { puts "SIGINT received"; terminate_gracefully }
|
trap("INT") { puts "SIGINT received"; terminate_gracefully }
|
||||||
@@ -72,7 +77,7 @@ private ######################################################################
|
|||||||
end
|
end
|
||||||
|
|
||||||
def fork_individual(process, num, port)
|
def fork_individual(process, num, port)
|
||||||
@environment.each { |k,v| ENV[k] = v }
|
apply_environment!
|
||||||
|
|
||||||
ENV["PORT"] = port.to_s
|
ENV["PORT"] = port.to_s
|
||||||
ENV["PS"] = "#{process.name}.#{num}"
|
ENV["PS"] = "#{process.name}.#{num}"
|
||||||
@@ -174,27 +179,37 @@ private ######################################################################
|
|||||||
@current_color >= COLORS.length ? "" : COLORS[@current_color]
|
@current_color >= COLORS.length ? "" : COLORS[@current_color]
|
||||||
end
|
end
|
||||||
|
|
||||||
def read_environment_files(filenames)
|
module Env
|
||||||
environment = {}
|
attr_reader :environment
|
||||||
|
|
||||||
(filenames || "").split(",").map(&:strip).each do |filename|
|
def read_environment_files(filenames)
|
||||||
error "No such file: #{filename}" unless File.exists?(filename)
|
environment = {}
|
||||||
environment.merge!(read_environment(filename))
|
|
||||||
end
|
|
||||||
|
|
||||||
environment.merge!(read_environment(".env")) unless filenames
|
(filenames || "").split(",").map(&:strip).each do |filename|
|
||||||
environment
|
error "No such file: #{filename}" unless File.exists?(filename)
|
||||||
end
|
environment.merge!(read_environment(filename))
|
||||||
|
|
||||||
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
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
include Env
|
||||||
|
extend Env
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
module Foreman
|
module Foreman
|
||||||
|
|
||||||
VERSION = "0.26.0"
|
VERSION = "0.27.0"
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
+4
-1
@@ -1,7 +1,7 @@
|
|||||||
.\" generated with Ronn/v0.7.3
|
.\" generated with Ronn/v0.7.3
|
||||||
.\" http://github.com/rtomayko/ronn/tree/0.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"
|
.SH "NAME"
|
||||||
\fBforeman\fR \- manage Procfile\-based applications
|
\fBforeman\fR \- manage Procfile\-based applications
|
||||||
@@ -85,6 +85,9 @@ bluepill
|
|||||||
inittab
|
inittab
|
||||||
.
|
.
|
||||||
.IP "\(bu" 4
|
.IP "\(bu" 4
|
||||||
|
runit
|
||||||
|
.
|
||||||
|
.IP "\(bu" 4
|
||||||
upstart
|
upstart
|
||||||
.
|
.
|
||||||
.IP "" 0
|
.IP "" 0
|
||||||
|
|||||||
@@ -83,6 +83,8 @@ foreman currently supports the following output formats:
|
|||||||
|
|
||||||
* inittab
|
* inittab
|
||||||
|
|
||||||
|
* runit
|
||||||
|
|
||||||
* upstart
|
* upstart
|
||||||
|
|
||||||
## INITTAB EXPORT
|
## INITTAB EXPORT
|
||||||
|
|||||||
@@ -8,4 +8,26 @@ describe Foreman do
|
|||||||
it { should be_a String }
|
it { should be_a String }
|
||||||
end
|
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
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user