Rakefile in soulmate-0.0.3 vs Rakefile in soulmate-0.0.4

- old
+ new

@@ -43,16 +43,52 @@ test.libs << 'test' test.pattern = 'test/**/test_*.rb' test.verbose = true end -task :default => :test - require 'rake/rdoctask' Rake::RDocTask.new do |rdoc| version = File.exist?('VERSION') ? File.read('VERSION') : "" rdoc.rdoc_dir = 'rdoc' rdoc.title = "soulmate #{version}" rdoc.rdoc_files.include('README*') rdoc.rdoc_files.include('lib/**/*.rb') +end + +REDIS_DIR = File.expand_path(File.join("..", "test"), __FILE__) +REDIS_CNF = File.join(REDIS_DIR, "test.conf") +REDIS_PID = File.join(REDIS_DIR, "db", "redis.pid") +REDIS_LOCATION = ENV['REDIS_LOCATION'] + +task :default => :run + +desc "Run tests and manage server start/stop" +task :run => [:start, :test, :stop] + +desc "Run rcov and manage server start/stop" +task :rcoverage => [:start, :rcov, :stop] + +desc "Start the Redis server" +task :start do + redis_running = \ + begin + File.exists?(REDIS_PID) && Process.kill(0, File.read(REDIS_PID).to_i) + rescue Errno::ESRCH + FileUtils.rm REDIS_PID + false + end + + if REDIS_LOCATION + system "#{REDIS_LOCATION}/redis-server #{REDIS_CNF}" unless redis_running + else + system "redis-server #{REDIS_CNF}" unless redis_running + end +end + +desc "Stop the Redis server" +task :stop do + if File.exists?(REDIS_PID) + Process.kill "INT", File.read(REDIS_PID).to_i + FileUtils.rm REDIS_PID + end end