File: recipes.rb

package info (click to toggle)
ruby-delayed-job 4.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 388 kB
  • sloc: ruby: 2,780; makefile: 8
file content (54 lines) | stat: -rw-r--r-- 1,606 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Capistrano Recipes for managing delayed_job
#
# Add these callbacks to have the delayed_job process restart when the server
# is restarted:
#
#   after "deploy:stop",    "delayed_job:stop"
#   after "deploy:start",   "delayed_job:start"
#   after "deploy:restart", "delayed_job:restart"
#
# If you want to use command line options, for example to start multiple workers,
# define a Capistrano variable delayed_job_args:
#
#   set :delayed_job_args, "-n 2"
#
# If you've got delayed_job workers running on a servers, you can also specify
# which servers have delayed_job running and should be restarted after deploy.
#
#   set :delayed_job_server_role, :worker
#

Capistrano::Configuration.instance.load do
  namespace :delayed_job do
    def rails_env
      fetch(:rails_env, false) ? "RAILS_ENV=#{fetch(:rails_env)}" : ''
    end

    def args
      fetch(:delayed_job_args, '')
    end

    def roles
      fetch(:delayed_job_server_role, :app)
    end

    def delayed_job_command
      fetch(:delayed_job_command, 'script/delayed_job')
    end

    desc 'Stop the delayed_job process'
    task :stop, :roles => lambda { roles } do
      run "cd #{current_path} && #{rails_env} #{delayed_job_command} stop #{args}"
    end

    desc 'Start the delayed_job process'
    task :start, :roles => lambda { roles } do
      run "cd #{current_path} && #{rails_env} #{delayed_job_command} start #{args}"
    end

    desc 'Restart the delayed_job process'
    task :restart, :roles => lambda { roles } do
      run "cd #{current_path} && #{rails_env} #{delayed_job_command} restart #{args}"
    end
  end
end