diff --git a/lib/foreman/procfile.rb b/lib/foreman/procfile.rb index a3076431..fbbe9950 100644 --- a/lib/foreman/procfile.rb +++ b/lib/foreman/procfile.rb @@ -83,7 +83,7 @@ def to_s def parse(filename) File.read(filename).gsub("\r\n","\n").split("\n").map do |line| - if line =~ /^([A-Za-z0-9_]+):\s*(.+)$/ + if line =~ /^([A-Za-z0-9_-]+):\s*(.+)$/ [$1, $2] end end.compact diff --git a/spec/foreman/cli_spec.rb b/spec/foreman/cli_spec.rb index 717ab520..1b810742 100644 --- a/spec/foreman/cli_spec.rb +++ b/spec/foreman/cli_spec.rb @@ -50,7 +50,7 @@ describe "check" do it "with a valid Procfile displays the jobs" do write_procfile - foreman("check").should == "valid procfile detected (alpha, bravo)\n" + foreman("check").should == "valid procfile detected (alpha, bravo, foo_bar, foo-bar)\n" end it "with a blank Procfile displays an error" do diff --git a/spec/foreman/export/upstart_spec.rb b/spec/foreman/export/upstart_spec.rb index 907564e1..dc9c97a6 100644 --- a/spec/foreman/export/upstart_spec.rb +++ b/spec/foreman/export/upstart_spec.rb @@ -29,6 +29,10 @@ mock(FileUtils).rm("/tmp/init/app-alpha-1.conf") mock(FileUtils).rm("/tmp/init/app-bravo.conf") mock(FileUtils).rm("/tmp/init/app-bravo-1.conf") + mock(FileUtils).rm("/tmp/init/app-foo-bar.conf") + mock(FileUtils).rm("/tmp/init/app-foo-bar-1.conf") + mock(FileUtils).rm("/tmp/init/app-foo_bar.conf") + mock(FileUtils).rm("/tmp/init/app-foo_bar-1.conf") upstart.export upstart.export diff --git a/spec/foreman/procfile_spec.rb b/spec/foreman/procfile_spec.rb index b447a72e..59d1658e 100644 --- a/spec/foreman/procfile_spec.rb +++ b/spec/foreman/procfile_spec.rb @@ -16,8 +16,10 @@ it "loads a passed-in Procfile" do write_procfile procfile = Foreman::Procfile.new("Procfile") - procfile["alpha"].should == "./alpha" - procfile["bravo"].should == "./bravo" + procfile["alpha"].should == "./alpha" + procfile["bravo"].should == "./bravo" + procfile["foo-bar"].should == "./foo-bar" + procfile["foo_bar"].should == "./foo_bar" end it "can have a process appended to it" do diff --git a/spec/resources/export/bluepill/app.pill b/spec/resources/export/bluepill/app.pill index 9df8c72d..79f98633 100644 --- a/spec/resources/export/bluepill/app.pill +++ b/spec/resources/export/bluepill/app.pill @@ -42,5 +42,40 @@ Bluepill.application("app", :foreground => false, :log_file => "/var/log/bluepil process.group = "app-bravo" end + app.process("foo_bar-1") do |process| + process.start_command = "./foo_bar" + process.working_dir = "/tmp/app" + process.daemonize = true + process.environment = {"PORT"=>"5200"} + process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill] + process.stop_grace_time = 45.seconds + + process.stdout = process.stderr = "/var/log/app/app-foo_bar-1.log" + + process.monitor_children do |children| + children.stop_command "kill {{PID}}" + end + + process.group = "app-foo_bar" + end + + app.process("foo-bar-1") do |process| + process.start_command = "./foo-bar" + + process.working_dir = "/tmp/app" + process.daemonize = true + process.environment = {"PORT"=>"5300"} + process.stop_signals = [:quit, 30.seconds, :term, 5.seconds, :kill] + process.stop_grace_time = 45.seconds + + process.stdout = process.stderr = "/var/log/app/app-foo-bar-1.log" + + process.monitor_children do |children| + + children.stop_command "kill {{PID}}" + end + + process.group = "app-foo-bar" + end end diff --git a/spec/resources/export/inittab/inittab.default b/spec/resources/export/inittab/inittab.default index f12762ab..59655c7b 100644 --- a/spec/resources/export/inittab/inittab.default +++ b/spec/resources/export/inittab/inittab.default @@ -1,4 +1,6 @@ # ----- foreman app processes ----- AP01:4:respawn:/bin/su - app -c 'cd /tmp/app;export PORT=5000;./alpha >> /var/log/app/alpha-1.log 2>&1' AP02:4:respawn:/bin/su - app -c 'cd /tmp/app;export PORT=5100;./bravo >> /var/log/app/bravo-1.log 2>&1' +AP03:4:respawn:/bin/su - app -c 'cd /tmp/app;export PORT=5200;./foo_bar >> /var/log/app/foo_bar-1.log 2>&1' +AP04:4:respawn:/bin/su - app -c 'cd /tmp/app;export PORT=5300;./foo-bar >> /var/log/app/foo-bar-1.log 2>&1' # ----- end foreman app processes ----- diff --git a/spec/resources/export/supervisord/app-alpha-1.conf b/spec/resources/export/supervisord/app-alpha-1.conf index 26a2f8f6..29240f56 100644 --- a/spec/resources/export/supervisord/app-alpha-1.conf +++ b/spec/resources/export/supervisord/app-alpha-1.conf @@ -19,6 +19,26 @@ stderr_logfile=/var/log/app/bravo-1.error.log user=app directory=/tmp/app environment=PORT=5100 +[program:app-foo_bar-1] +command=./foo_bar +autostart=true +autorestart=true +stopsignal=QUIT +stdout_logfile=/var/log/app/foo_bar-1.log +stderr_logfile=/var/log/app/foo_bar-1.error.log +user=app +directory=/tmp/app +environment=PORT=5200 +[program:app-foo-bar-1] +command=./foo-bar +autostart=true +autorestart=true +stopsignal=QUIT +stdout_logfile=/var/log/app/foo-bar-1.log +stderr_logfile=/var/log/app/foo-bar-1.error.log +user=app +directory=/tmp/app +environment=PORT=5300 [group:app] -programs=app-alpha-1,app-bravo-1 +programs=app-alpha-1,app-bravo-1,app-foo_bar-1,app-foo-bar-1 diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f7dd057d..70536cd0 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -79,6 +79,8 @@ def write_procfile(procfile="Procfile", alpha_env="") file.puts "alpha: ./alpha" + " #{alpha_env}".rstrip file.puts "\n" file.puts "bravo:\t./bravo" + file.puts "foo_bar:\t./foo_bar" + file.puts "foo-bar:\t./foo-bar" end File.expand_path(procfile) end