summaryrefslogtreecommitdiff
path: root/lib/tasks/opentox.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tasks/opentox.rb')
-rw-r--r--lib/tasks/opentox.rb86
1 files changed, 67 insertions, 19 deletions
diff --git a/lib/tasks/opentox.rb b/lib/tasks/opentox.rb
index 6f1284f..afb8cb6 100644
--- a/lib/tasks/opentox.rb
+++ b/lib/tasks/opentox.rb
@@ -1,4 +1,4 @@
-require "environment"
+load File.join(File.dirname(__FILE__), '..', 'environment.rb')
namespace :opentox do
@@ -18,18 +18,22 @@ namespace :opentox do
task :start do
@@config[:services].each do |service,uri|
dir = File.join(@@config[:base_dir], service)
- case @@config[:webserver]
- when 'thin'
+ server = @@config[:webserver]
+ `redis-server &`
+ case server
+ when /thin|mongrel|webrick/
port = uri.sub(/^.*:/,'').sub(/\/$/,'')
Dir.chdir dir
+ pid_file = File.join(@@tmp_dir,"#{service}.pid")
begin
- `thin --trace --rackup config.ru start -p #{port} -e #{ENV['RACK_ENV']} &`
- puts "#{service} started on port #{port}."
+ `#{server} --trace --rackup config.ru start -p #{port} -e #{ENV['RACK_ENV']} -P #{pid_file} -d &`
+ puts "#{service} started on localhost:#{port} in #{ENV['RACK_ENV']} environment with PID file #{pid_file}."
rescue
puts "Cannot start #{service} on port #{port}."
end
when 'passenger'
- puts "not yet implemented"
+ `touch #{File.join(dir, 'tmp/restart.txt')}`
+ puts "#{service} restarted."
else
puts "not yet implemented"
end
@@ -38,9 +42,18 @@ namespace :opentox do
desc "Stop opentox services"
task :stop do
- @@config[:services].each do |service,uri|
- port = uri.sub(/^.*:/,'').sub(/\/$/,'')
- `echo "SHUTDOWN" | nc localhost #{port}` if port
+ server = @@config[:webserver]
+ if server =~ /thin|mongrel|webrick/
+ @@config[:services].each do |service,uri|
+ port = uri.sub(/^.*:/,'').sub(/\/$/,'')
+ pid_file = File.join(@@tmp_dir,"#{service}.pid")
+ begin
+ puts `#{server} stop -P #{pid_file}`
+ puts "#{service} stopped on localhost:#{port}"
+ rescue
+ puts "Cannot stop #{service} on port #{port}."
+ end
+ end
end
end
@@ -49,20 +62,55 @@ namespace :opentox do
end
- namespace :test do
+ desc "Run all OpenTox tests"
+ task :test do
+ @@config[:services].each do |service,uri|
+ dir = File.join(@@config[:base_dir], service)
+ Dir.chdir dir
+ puts "Running tests in #{dir}"
+ `rake test -t 1>&2`
+ end
+ end
- ENV['RACK_ENV'] = 'test'
- test = "#{Dir.pwd}/test/test.rb"
+end
- desc "Run local tests"
- task :local => "opentox:services:restart" do
- load test
+desc "Start service in current directory"
+task :start do
+ service = File.basename(Dir.pwd).intern
+ server = @@config[:webserver]
+ case server
+ when /thin|mongrel|webrick/
+ port = @@config[:services][service].sub(/^.*:/,'').sub(/\/$/,'')
+ pid_file = File.join(@@tmp_dir,"#{service}.pid")
+ begin
+ `#{server} --trace --rackup config.ru start -p #{port} -e #{ENV['RACK_ENV']} -P #{pid_file} -d &`
+ puts "#{service} started on localhost:#{port} in #{ENV['RACK_ENV']} environment with PID file #{pid_file}."
+ rescue
+ puts "Cannot start #{service} on port #{port}."
+ end
+ when 'passenger'
+ `touch tmp/restart.txt`
+ puts "#{service} restarted."
+ else
+ puts "not yet implemented"
end
+end
- task :remote do
- #load 'test.rb'
+desc "Stop service in current directory"
+task :stop do
+ service = File.basename(Dir.pwd).intern
+ server = @@config[:webserver]
+ if server =~ /thin|mongrel|webrick/
+ port = @@config[:services][service].sub(/^.*:/,'').sub(/\/$/,'')
+ pid_file = File.join(@@tmp_dir,"#{service}.pid")
+ begin
+ puts `thin stop -P #{pid_file}`
+ puts "#{service} stopped on localhost:#{port}"
+ rescue
+ puts "Cannot stop #{service} on port #{port}."
end
-
end
-
end
+
+desc "Restart service in current directory"
+task :restart => [:stop, :start]