crazycode-cap-recipes 0.3.37

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/LICENSE +20 -0
  2. data/README.textile +586 -0
  3. data/Rakefile +57 -0
  4. data/VERSION.yml +5 -0
  5. data/bin/cap-recipes +4 -0
  6. data/cap-recipes.gemspec +128 -0
  7. data/examples/advanced/deploy.rb +39 -0
  8. data/examples/advanced/deploy/experimental.rb +14 -0
  9. data/examples/advanced/deploy/production.rb +20 -0
  10. data/examples/simple/deploy.rb +36 -0
  11. data/lib/cap_recipes.rb +1 -0
  12. data/lib/cap_recipes/tasks/apache.rb +1 -0
  13. data/lib/cap_recipes/tasks/apache/install.rb +16 -0
  14. data/lib/cap_recipes/tasks/apache/manage.rb +26 -0
  15. data/lib/cap_recipes/tasks/aptitude.rb +1 -0
  16. data/lib/cap_recipes/tasks/aptitude/manage.rb +32 -0
  17. data/lib/cap_recipes/tasks/backgroundrb.rb +1 -0
  18. data/lib/cap_recipes/tasks/backgroundrb/hooks.rb +5 -0
  19. data/lib/cap_recipes/tasks/backgroundrb/manage.rb +64 -0
  20. data/lib/cap_recipes/tasks/bundler.rb +1 -0
  21. data/lib/cap_recipes/tasks/bundler/manage.rb +31 -0
  22. data/lib/cap_recipes/tasks/delayed_job.rb +1 -0
  23. data/lib/cap_recipes/tasks/delayed_job/hooks.rb +5 -0
  24. data/lib/cap_recipes/tasks/delayed_job/manage.rb +34 -0
  25. data/lib/cap_recipes/tasks/ec2/install.rb +32 -0
  26. data/lib/cap_recipes/tasks/ec2/manage.rb +32 -0
  27. data/lib/cap_recipes/tasks/gitosis.rb +1 -0
  28. data/lib/cap_recipes/tasks/gitosis/install.rb +58 -0
  29. data/lib/cap_recipes/tasks/gitosis/manage.rb +3 -0
  30. data/lib/cap_recipes/tasks/hudson.rb +1 -0
  31. data/lib/cap_recipes/tasks/hudson/manage.rb +33 -0
  32. data/lib/cap_recipes/tasks/jetty.rb +1 -0
  33. data/lib/cap_recipes/tasks/jetty/install.rb +33 -0
  34. data/lib/cap_recipes/tasks/jetty/manage.rb +34 -0
  35. data/lib/cap_recipes/tasks/jetty/web.rb +98 -0
  36. data/lib/cap_recipes/tasks/juggernaut.rb +3 -0
  37. data/lib/cap_recipes/tasks/juggernaut/hooks.rb +4 -0
  38. data/lib/cap_recipes/tasks/juggernaut/manage.rb +56 -0
  39. data/lib/cap_recipes/tasks/maven.rb +85 -0
  40. data/lib/cap_recipes/tasks/memcache.rb +3 -0
  41. data/lib/cap_recipes/tasks/memcache/hooks.rb +5 -0
  42. data/lib/cap_recipes/tasks/memcache/install.rb +15 -0
  43. data/lib/cap_recipes/tasks/memcache/manage.rb +37 -0
  44. data/lib/cap_recipes/tasks/mongodb.rb +1 -0
  45. data/lib/cap_recipes/tasks/mongodb/install.rb +137 -0
  46. data/lib/cap_recipes/tasks/mongodb/manage.rb +27 -0
  47. data/lib/cap_recipes/tasks/passenger.rb +1 -0
  48. data/lib/cap_recipes/tasks/passenger/install.rb +72 -0
  49. data/lib/cap_recipes/tasks/passenger/manage.rb +23 -0
  50. data/lib/cap_recipes/tasks/rails.rb +1 -0
  51. data/lib/cap_recipes/tasks/rails/hooks.rb +6 -0
  52. data/lib/cap_recipes/tasks/rails/manage.rb +51 -0
  53. data/lib/cap_recipes/tasks/ruby.rb +1 -0
  54. data/lib/cap_recipes/tasks/ruby/install.rb +16 -0
  55. data/lib/cap_recipes/tasks/rubygems.rb +1 -0
  56. data/lib/cap_recipes/tasks/rubygems/install.rb +22 -0
  57. data/lib/cap_recipes/tasks/rubygems/manage.rb +43 -0
  58. data/lib/cap_recipes/tasks/templates/hudson.erb +85 -0
  59. data/lib/cap_recipes/tasks/templates/mongod.conf.erb +89 -0
  60. data/lib/cap_recipes/tasks/templates/mongodb.init.erb +73 -0
  61. data/lib/cap_recipes/tasks/templates/mongodb.repo.erb +4 -0
  62. data/lib/cap_recipes/tasks/templates/mongos.init.erb +69 -0
  63. data/lib/cap_recipes/tasks/templates/tomcat.erb +95 -0
  64. data/lib/cap_recipes/tasks/thinking_sphinx.rb +1 -0
  65. data/lib/cap_recipes/tasks/thinking_sphinx/hooks.rb +4 -0
  66. data/lib/cap_recipes/tasks/thinking_sphinx/install.rb +17 -0
  67. data/lib/cap_recipes/tasks/thinking_sphinx/manage.rb +65 -0
  68. data/lib/cap_recipes/tasks/tomcat.rb +1 -0
  69. data/lib/cap_recipes/tasks/tomcat/install.rb +43 -0
  70. data/lib/cap_recipes/tasks/tomcat/manage.rb +34 -0
  71. data/lib/cap_recipes/tasks/tomcat/war.rb +98 -0
  72. data/lib/cap_recipes/tasks/utilities.rb +172 -0
  73. data/lib/cap_recipes/tasks/whenever.rb +1 -0
  74. data/lib/cap_recipes/tasks/whenever/hooks.rb +5 -0
  75. data/lib/cap_recipes/tasks/whenever/manage.rb +8 -0
  76. data/lib/cap_recipes/tasks/yum.rb +1 -0
  77. data/lib/cap_recipes/tasks/yum/manage.rb +30 -0
  78. data/lib/capify.rb +35 -0
  79. data/lib/templates/Capfile.tt +4 -0
  80. data/lib/templates/deploy.rb.tt +30 -0
  81. data/spec/cap/all/Capfile +2 -0
  82. data/spec/cap/helper.rb +3 -0
  83. data/spec/cap_recipes_spec.rb +56 -0
  84. data/spec/spec_helper.rb +37 -0
  85. data/specs.watchr +35 -0
  86. metadata +155 -0
@@ -0,0 +1 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'bundler/*.rb')].sort.each { |lib| require lib }
@@ -0,0 +1,31 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+
3
+ namespace :bundle do
4
+ desc "Runs Gem Bundle after deployment"
5
+ task :install do
6
+ run "cd #{deploy_to}/current; bundle install"
7
+ end
8
+
9
+ desc "lock bundle"
10
+ task :lock do
11
+ run "cd #{deploy_to}/current; bundle lock"
12
+ end
13
+
14
+ desc "unlock bundle"
15
+ task :unlock do
16
+ run "cd #{deploy_to}/current; bundle unlock"
17
+ end
18
+
19
+ desc "show bundle"
20
+ task :show do
21
+ run "cd #{deploy_to}/current; bundle show"
22
+ end
23
+
24
+ desc "bundle check"
25
+ task :check do
26
+ run "cd #{deploy_to}/current; bundle check"
27
+ end
28
+
29
+
30
+ end
31
+ end
@@ -0,0 +1 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'delayed_job/*.rb')].sort.each { |lib| require lib }
@@ -0,0 +1,5 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+ after "deploy:start", "delayed_job:start"
3
+ after "deploy:stop", "delayed_job:stop"
4
+ after "deploy:restart", "delayed_job:restart"
5
+ end
@@ -0,0 +1,34 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../utilities')
2
+
3
+ Capistrano::Configuration.instance(true).load do
4
+ set :delayed_script_path, "#{current_path}/script/delayed_job"
5
+ set :delayed_job_env, 'production'
6
+ set :delayed_job_role, :app
7
+ set :base_ruby_path, '/usr'
8
+
9
+ namespace :delayed_job do
10
+ desc "Start delayed_job process"
11
+ task :start, :roles => delayed_job_role do
12
+ utilities.with_role(delayed_job_role) do
13
+ try_sudo "RAILS_ENV=#{delayed_job_env} #{base_ruby_path}/bin/ruby #{delayed_script_path} start"
14
+ end
15
+ end
16
+
17
+ desc "Stop delayed_job process"
18
+ task :stop, :roles => delayed_job_role do
19
+ utilities.with_role(delayed_job_role) do
20
+ try_sudo "RAILS_ENV=#{delayed_job_env} #{base_ruby_path}/bin/ruby #{delayed_script_path} stop"
21
+ end
22
+ end
23
+
24
+ desc "Restart delayed_job process"
25
+ task :restart, :roles => delayed_job_role do
26
+ utilities.with_role(delayed_job_role) do
27
+ delayed_job.stop
28
+ sleep(4)
29
+ try_sudo "killall -s TERM delayed_job; true"
30
+ delayed_job.start
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,32 @@
1
+ require 'cap_recipes/tasks/utilities.rb'
2
+
3
+ Capistrano::Configuration.instance(true).load do
4
+
5
+ set :install_path, "/usr/local/"
6
+
7
+ namespace :ec2 do
8
+ desc "install the ec2-amitools"
9
+ task :install do
10
+ run "unzip ec2-ami-tools.zip -d #{install_path}"
11
+ end
12
+ before "ec2:install", "ec2:install_dependencies"
13
+ before "ec2:install", "ec2:download"
14
+
15
+ desc "download the ec2-amitools"
16
+ task :download do
17
+ run "wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip" unless File.exists? "ec2-ami-tools.zip"
18
+ end
19
+
20
+ desc "install the ec2 dependencies"
21
+ task :install_dependencies do
22
+ utilities.apt_install %w[curl gzip openssl rsync]
23
+ end
24
+
25
+ desc "export ec2-ami-tools to EC2_AMITOOL_HOME and PATH"
26
+ task :export do
27
+ run "export EC2_AMITOOL_HOME=#{install_path}/ec2-ami-tools"
28
+ run "export PATH=$PATH:${EC2_AMITOOL_HOME}/bin"
29
+ end
30
+ after "ec2:install", "ec2:export"
31
+ end
32
+ end
@@ -0,0 +1,32 @@
1
+ require 'cap_recipes/tasks/utilities.rb'
2
+
3
+ Capistrano::Configuration.instance(true).load do
4
+
5
+ =begin # Set these vars.
6
+ ssh_options[:keys] = [File.join(ENV["HOME"], ".ssh", "id_rsa.pub")]
7
+
8
+ set :public_key, "id-KEYNAME" # the keypair to use for the instance
9
+ set :cert_code, "CERT_CODE" # the code for the private key and for the certificate
10
+ set :bundle_host, "DOMAIN.com" # the domain for the site
11
+ set :account_id, "ACCOUNTID" # your account_id without dashes
12
+ set :bundle_name, "BUNDLE" # the name of the bundle
13
+ set :store_bucket, "BUCKET" # the name of the bucket
14
+ set :access_key_id, "ACCESS KEY"
15
+ set :access_secret_key, "SECRET KEY"
16
+ =end
17
+
18
+
19
+ namespace :ec2 do
20
+ desc "bundles up our innercalm image"
21
+ task :bundle do
22
+ utilities.with_credentials :user => 'root' do
23
+ system("scp -i ~/.ec2/#{public_key} ~/.ec2/pk-#{cert_code}.pem ~/.ec2/cert-#{cert_code}.pem root@#{bundle_host}:/mnt")
24
+ run "rm -f /mnt/#{bundle_name}"
25
+ run "export PATH=/usr/bin:$PATH; ec2-bundle-vol -d /mnt -k /mnt/pk-#{cert_code}.pem -c /mnt/cert-#{cert_code}.pem -u #{account_id} -r i386 -p #{bundle_name}"
26
+ run "ls -l /mnt/#{bundle_name}.*"
27
+ run "export PATH=/usr/bin:$PATH; ec2-upload-bundle -b #{store_bucket} -m /mnt/#{bundle_name}.manifest.xml -a #{access_key_id} -s #{access_secret_key}"
28
+ system("ec2-register #{store_bucket}/#{bundle_name}.manifest.xml")
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'gitosis/*.rb')].sort.each { |lib| require lib }
@@ -0,0 +1,58 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../utilities')
2
+
3
+ Capistrano::Configuration.instance(true).load do
4
+
5
+ namespace :gitosis do
6
+ desc "install Gitosis"
7
+ task :install do
8
+ gitosis.install_packages
9
+ gitosis.setup_packages
10
+ gitosis.setup_git_user
11
+ gitosis.copy_ssh
12
+ gitosis.set_permissions
13
+ end
14
+
15
+ desc "install all necessary packages"
16
+ task :install_packages do
17
+ utilities.apt_install %[git-core python-setuptools]
18
+ end
19
+ before "gitosis:install_packages", "aptitude:updates"
20
+
21
+ desc "setup packages"
22
+ task :setup_packages do
23
+ run "mkdir -p ~/src"
24
+ run "cd ~/src; git clone git://eagain.net/gitosis.git"
25
+ run "cd ~/src/gitosis; #{sudo} python setup.py install"
26
+ end
27
+
28
+ desc "setup git user"
29
+ task :setup_git_user do
30
+ sudo "adduser --system --shell /bin/sh --gecos \'git version control\' --group --disabled-password --home /home/git git"
31
+ end
32
+
33
+ desc "generate ssh key"
34
+ task :generate_ssh do
35
+ run "rm -f /home/#{user}/.ssh/id_rsa; rm -f /home/#{user}/.ssh/id_rsa.pub"
36
+ run "ssh-keygen -q -f /home/#{user}/.ssh/id_rsa -N \"\""
37
+ end
38
+ before "gitosis:copy_ssh", "gitosis:generate_ssh"
39
+
40
+ desc "copy over servers own ssh, important for self pull"
41
+ task :copy_ssh do
42
+ run "sudo -H -u git gitosis-init < /home/#{user}/.ssh/id_rsa.pub"
43
+ end
44
+
45
+ desc "set permissions"
46
+ task :set_permissions do
47
+ sudo "chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update"
48
+ end
49
+
50
+ desc "cleanup the files"
51
+ task :cleanup do
52
+ sudo "rm -rf src"
53
+ end
54
+ before "gitosis:setup_packages", "gitosis:cleanup"
55
+ after "gitosis:setup_packages", "gitosis:cleanup"
56
+
57
+ end
58
+ end
@@ -0,0 +1,3 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+
3
+ end
@@ -0,0 +1 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'hudson/*.rb')].sort.each { |lib| require lib }
@@ -0,0 +1,33 @@
1
+ require 'fileutils'
2
+ require File.expand_path(File.dirname(__FILE__) + '/../utilities')
3
+
4
+ Capistrano::Configuration.instance(true).load do
5
+ # HUDSON SERVERS
6
+ _cset :hudson_home, "/opt/hudson"
7
+ _cset :hudson_ctrl, "/etc/init.d/hudson"
8
+
9
+ #
10
+ # simple interactions with the hudson server
11
+ #
12
+ namespace :hudson do
13
+
14
+ desc "install hudson"
15
+ task :install do
16
+ dir = File.dirname(hudson_home)
17
+ basename = File.basename(hudson_file)
18
+ basectl = File.basename(hudson_ctrl)
19
+ puts "#{hudson_file} ,,,, #{dir} /#{basename}"
20
+ utilities.sudo_upload "#{hudson_file}", "#{dir}/#{basename}"
21
+ sudo "tar -zvxf #{dir}/#{basename} -C #{dir}"
22
+ sudo "chown #{user}:root #{hudson_home} -R"
23
+
24
+ put utilities.render("hudson", binding), "hudson.tmp"
25
+ sudo "cp hudson.tmp #{hudson_ctrl}"
26
+ sudo "chmod a+x #{hudson_ctrl}"
27
+ sudo "/sbin/chkconfig --add #{basectl}"
28
+ run "rm hudson.tmp"
29
+ sudo "rm #{dir}/#{basename}"
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'jetty/*.rb')].sort.each { |lib| require lib }
@@ -0,0 +1,33 @@
1
+ require 'fileutils'
2
+ require File.expand_path(File.dirname(__FILE__) + '/../utilities')
3
+
4
+ Capistrano::Configuration.instance(true).load do
5
+ # JETTY SERVERS
6
+ _cset :jetty_home, "/usr/local/jetty-7.1.6"
7
+ _cset :jetty_ctrl, "/etc/init.d/jetty"
8
+
9
+ #
10
+ # simple interactions with the jetty server
11
+ #
12
+ namespace :jetty do
13
+
14
+ desc "install jetty"
15
+ task :install do
16
+ dir = File.dirname(jetty_home)
17
+ basename = File.basename(jetty_file)
18
+ basectl = File.basename(jetty_ctrl)
19
+ puts "#{jetty_file} ,,,, #{dir} /#{basename}"
20
+ utilities.sudo_upload "#{jetty_file}", "#{dir}/#{basename}"
21
+ sudo "tar -zvxf #{dir}/#{basename} -C #{dir}"
22
+ sudo "chown #{user}:root #{jetty_home} -R"
23
+
24
+ put utilities.render("jetty", binding), "jetty.tmp"
25
+ sudo "cp jetty.tmp #{jetty_ctrl}"
26
+ sudo "chmod a+x #{jetty_ctrl}"
27
+ sudo "/sbin/chkconfig --add #{basectl}"
28
+ run "rm jetty.tmp"
29
+ sudo "rm #{dir}/#{basename}"
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,34 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+ #
3
+ # simple interactions with the jetty server
4
+ #
5
+ namespace :jetty do
6
+
7
+ desc "start jetty"
8
+ task :start do
9
+ sudo "#{jetty_ctrl} start"
10
+ end
11
+
12
+ desc "stop jetty"
13
+ task :stop do
14
+ sudo "#{jetty_ctrl} stop"
15
+ end
16
+
17
+ desc "stop and start jetty"
18
+ task :restart do
19
+ jetty.stop
20
+ jetty.start
21
+ end
22
+
23
+ desc "list jetty process"
24
+ task :ps do
25
+ run "ps aux | grep jetty | grep -v grep"
26
+ end
27
+
28
+ desc "tail :jetty_home/logs/*.log and logs/catalina.out"
29
+ task :tail do
30
+ stream "tail -f #{jetty_home}/logs/*.log"
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,98 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../utilities')
2
+
3
+ Capistrano::Configuration.instance(true).load do
4
+ # DEPLOYMENT SCHEME
5
+ set :scm, :none
6
+ set :deploy_via, :copy
7
+ set :use_sudo, true
8
+
9
+ _cset :deploy_to_parent, "/srv/applications"
10
+
11
+ default_run_options[:pty] = true
12
+
13
+ set :keep_releases, 5
14
+
15
+ set :repository do
16
+ fetch(:deploy_from)
17
+ end
18
+
19
+ set :deploy_from do
20
+ dir = "/tmp/prep_#{release_name}"
21
+ system("mkdir -p #{dir}")
22
+ dir
23
+ end
24
+
25
+ # this is capistrano's default location.
26
+ # depending on the permissions of the server
27
+ # you may need to create it and chown it over
28
+ # to :user (e.g. chown -R robotuser:robotuser /u)
29
+ set :deploy_to do
30
+ dir = "#{deploy_to_parent}/#{application}"
31
+ sudo "mkdir -p #{dir}"
32
+ sudo "chown #{user} #{dir}"
33
+ dir
34
+ end
35
+
36
+ #
37
+ # link the current/whatever.war into our webapps/whatever.war
38
+ #
39
+ #after 'deploy:setup' do
40
+ # cmd = "ln -s #{deploy_to}/current/`basename #{war}` #{jetty_home}/webapps/`basename #{war}`"
41
+ # puts cmd
42
+ # sudo cmd
43
+ #end
44
+
45
+ # collect up our war into the deploy_from folder
46
+ # notice that all we're doing is a copy here,
47
+ # so it is pretty easy to swap this out for
48
+ # a wget command, which makes sense if you're
49
+ # using a continuous integration server like
50
+ # bamboo. (more on this later).
51
+ before 'deploy:update_code' do
52
+ unless(war.nil?)
53
+ puts "get war"
54
+ system("mkdir #{deploy_from}/webapp")
55
+ system("cp #{war} #{deploy_from}/webapp")
56
+ system("cd #{deploy_from}/webapp && jar xf `basename #{war}`")
57
+ system("rm -Rf #{deploy_from}/webapp/META-INF")
58
+ system("rm #{deploy_from}/webapp/`basename #{war}`")
59
+ puts system("ls -l #{deploy_from}")
60
+ end
61
+ end
62
+
63
+ #
64
+ # Disable all the default tasks that
65
+ # either don't apply, or I haven't made work.
66
+ #
67
+ namespace :deploy do
68
+ # restart jetty
69
+ task :restart do
70
+ jetty.restart
71
+ end
72
+
73
+ [ :upload, :cold, :start, :stop, :migrate, :migrations, :finalize_update ].each do |default_task|
74
+ desc "[internal] disabled"
75
+ task default_task do
76
+ # disabled
77
+ end
78
+ end
79
+
80
+ namespace :web do
81
+ [ :disable, :enable ].each do |default_task|
82
+ desc "[internal] disabled"
83
+ task default_task do
84
+ # disabled
85
+ end
86
+ end
87
+ end
88
+
89
+ namespace :pending do
90
+ [ :default, :diff ].each do |default_task|
91
+ desc "[internal] disabled"
92
+ task default_task do
93
+ # disabled
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,3 @@
1
+ #Juggernaut install and management
2
+
3
+ Dir[File.join(File.dirname(__FILE__), 'juggernaut/*.rb')].sort.each { |lib| require lib }
@@ -0,0 +1,4 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+ after "deploy:update_code", "juggernaut:symlink_config" # copy juggernaut.yml on update code
3
+ after "deploy:restart" , "juggernaut:restart" # restart juggernaut on app restart
4
+ end
@@ -0,0 +1,56 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../utilities')
2
+
3
+ Capistrano::Configuration.instance(true).load do
4
+ set :juggernaut_config, "#{current_path}/config/juggernaut.yml"
5
+ set :juggernaut_pid, "#{current_path}/tmp/pids/juggernaut.pid"
6
+ set :juggernaut_log, "#{current_path}/log/juggernaut.log"
7
+ set :juggernaut_role, :app
8
+ set :base_ruby_path, '/usr'
9
+
10
+ namespace :juggernaut do
11
+
12
+ # ===============================================================
13
+ # PROCESS MANAGEMENT
14
+ # ===============================================================
15
+
16
+ desc "Starts the juggernaut push server"
17
+ task :start, :roles => juggernaut_role do
18
+ utilities.with_role(juggernaut_role) do
19
+ puts "Starting juggernaut push server"
20
+ try_sudo "#{base_ruby_path}/bin/juggernaut -c #{juggernaut_config} -d --pid #{juggernaut_pid} --log #{juggernaut_log}"
21
+ end
22
+ end
23
+
24
+ desc "Stops the juggernaut push server"
25
+ task :stop, :roles => juggernaut_role do
26
+ utilities.with_role(juggernaut_role) do
27
+ puts "Stopping juggernaut push server"
28
+ try_sudo "#{base_ruby_path}/bin/juggernaut -c #{juggernaut_config} -k * --pid #{juggernaut_pid} --log #{juggernaut_log}"
29
+ end
30
+ end
31
+
32
+ desc "Restarts the juggernaut push server"
33
+ task :restart, :roles => juggernaut_role do
34
+ utilities.with_role(juggernaut_role) do
35
+ juggernaut.stop
36
+ juggernaut.start
37
+ end
38
+ end
39
+
40
+ # ===============================================================
41
+ # FILE MANAGEMENT
42
+ # ===============================================================
43
+
44
+ desc "Symlinks the shared/config/juggernaut yaml to release/config/"
45
+ task :symlink_config, :roles => :app do
46
+ try_sudo "ln -s #{shared_path}/config/juggernaut.yml #{release_path}/config/juggernaut.yml"
47
+ end
48
+
49
+ desc "Displays the juggernaut log from the server"
50
+ task :tail, :roles => :app do
51
+ stream "tail -f #{shared_path}/log/juggernaut.log"
52
+ end
53
+
54
+ end
55
+
56
+ end