Commit f6f45b67

mo khan <mo@mokhan.ca>
2013-07-30 03:53:31
add init.d script for starting, stopping and restarting delayed_job
1 parent 0b71fd7
Changed files (2)
config/recipes/templates/delayed_job_init.erb
@@ -0,0 +1,46 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          delayed_job
+# Required-Start:    $all
+# Required-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:
+### END INIT INFO
+set -e
+
+N=/etc/init.d/delayed_job_<%= application %>
+app_root=<%= current_path %>
+user=<%= user %>
+service="delayed_job"
+
+usage() {
+  echo "Usage: $N {start|stop|status|restart|force-reload} <environment>" >&2
+  exit 1
+}
+
+set -e
+
+#[ -n "$2" ] || usage
+
+#rails_env="$2"
+rails_env=PRODUCTION
+
+interact() {
+    op="$1"
+    echo "$1ing $service"
+    su - -c "cd $app_root; RAILS_ENV=<%= rails_env %> bundle exec script/delayed_job $op" $user
+}
+
+case "$1" in
+    start|stop|status)
+        interact "$1"
+        ;;
+    reload|restart|force-reload)
+        interact restart
+        ;;
+    *)
+        usage
+        ;;
+esac
+
+exit 0
config/recipes/delayed_job.rb
@@ -1,9 +1,17 @@
 namespace :delayed_job do 
+  desc "setup delayed job"
+  task :setup, roles: :app do
+    template "delayed_job_init.erb", "/tmp/delayed_job_init"
+    run "chmod +x /tmp/delayed_job_init"
+    run "#{sudo} mv /tmp/delayed_job_init /etc/init.d/delayed_job_#{application}"
+    run "#{sudo} update-rc.d -f delayed_job_#{application} defaults"
+  end
+  after "deploy:setup", "delayed_job:setup"
+
   %w[start stop restart].each do |command|
     desc "#{command} delayed_job"
-    task command, :roles => :app do
-      #run "chmod +x #{current_path}/script/restart_delayed_job"
-      run "cd #{current_path}; RAILS_ENV=#{rails_env} script/delayed_job #{command}"
+    task command, roles: :app do
+      run "#{sudo} service delayed_job_#{application} #{command}"
     end
     after "deploy:#{command}", "delayed_job:#{command}"
   end