From 9d5260ddeeb3e92645a12d6e5eeeb79470a0fd05 Mon Sep 17 00:00:00 2001 From: Dane Jensen Date: Fri, 16 Jan 2009 09:48:01 +0800 Subject: [PATCH] experimental rake tasks to control rabbitmq. note that it requires that dtach is installed. Signed-off-by: ezmobius --- Rakefile | 2 ++ tasks/rabbitmq.rake | 73 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 tasks/rabbitmq.rake diff --git a/Rakefile b/Rakefile index 782ebc9..cb4455f 100644 --- a/Rakefile +++ b/Rakefile @@ -9,6 +9,8 @@ EMAIL = "ezra@engineyard.com" HOMEPAGE = "http://github.com/ezmobius/nanite" SUMMARY = "self assembling fabric of ruby daemons" +Dir.glob('tasks/*.rake').each { |r| Rake.application.add_import r } + spec = Gem::Specification.new do |s| s.name = GEM s.version = ::VER diff --git a/tasks/rabbitmq.rake b/tasks/rabbitmq.rake new file mode 100644 index 0000000..5ad228c --- /dev/null +++ b/tasks/rabbitmq.rake @@ -0,0 +1,73 @@ +# Inspired by rabbitmq.rake the Redbox project at http://github.com/rick/redbox/tree/master + +class RabbitMQ + + def self.basedir + basedir = File.expand_path(File.dirname(__FILE__) + "/../") # ick + end + + def self.rabbitdir + "#{basedir}/vendor/rabbitmq-server-1.5.0" + end + + def self.dtach_socket + "#{basedir}/tmp/rabbitmq.dtach" + end + + # Just check for existance of dtach socket + def self.running? + File.exists? dtach_socket + end + + def self.setup_environment + ENV['MNESIA_BASE'] ||= "#{basedir}/db/mnesia" + ENV['LOG_BASE'] ||= "#{basedir}.log" + ENV['RABBITMQ_NODE_ONLY'] ||= "0" # to get an erlang shell + end + + def self.start + setup_environment + exec "dtach -n #{dtach_socket} #{rabbitdir}/scripts/rabbitmq-server" + end + + def self.attach + exec "dtach -a #{dtach_socket}" + end + + def self.stop + system "#{rabbitdir}/scripts/rabbitmqctl stop" + end + +end + +namespace :rabbitmq do + + desc "Start RabbitMQ" + task :start do + RabbitMQ.start + end + + desc "stop" + task :stop do + RabbitMQ.stop + end + + desc "Attach to RabbitMQ dtach socket" + task :attach do + RabbitMQ.attach + end + + namespace :package do + + desc "Download package" + task :download do + Dir.chdir("vendor") do + system "wget http://www.rabbitmq.com/releases/rabbitmq-server/v1.5.0/rabbitmq-server-1.5.0.tar.gz" + end + end + + end + + +end + \ No newline at end of file