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
data/Rakefile ADDED
@@ -0,0 +1,57 @@
1
+ =begin
2
+ Using Jeweler for Gem Packaging...
3
+
4
+ * Update the version and release version to github:
5
+ $ rake version:bump:patch && rake release && rake gemcutter:release
6
+
7
+ * Build and install the latest version locally:
8
+ $ rake install
9
+
10
+ =end
11
+
12
+ require 'rake'
13
+ require 'rake/testtask'
14
+ require 'rake/rdoctask'
15
+
16
+ begin
17
+ require 'jeweler'
18
+ Jeweler::Tasks.new do |s|
19
+ s.name = "crazycode-cap-recipes"
20
+ s.summary = %Q{Battle-tested capistrano recipes for passenger, delayed_job, and more}
21
+ s.email = "crazycode@gmail.com"
22
+ s.homepage = "http://github.com/crazycode/cap-recipes"
23
+ s.description = "Battle-tested capistrano recipes for debian, passenger, apache, hudson, delayed_job, juggernaut, rubygems, backgroundrb, rails and more"
24
+ s.authors = ["crazycode"]
25
+ s.rubyforge_project = 'crazycode-cap-recipes'
26
+ end
27
+ Jeweler::GemcutterTasks.new
28
+ rescue LoadError
29
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
30
+ end
31
+
32
+ Rake::RDocTask.new do |rdoc|
33
+ rdoc.rdoc_dir = 'rdoc'
34
+ rdoc.title = 'crazycode-cap-recipes'
35
+ rdoc.options << '--line-numbers' << '--inline-source'
36
+ rdoc.rdoc_files.include('README*')
37
+ rdoc.rdoc_files.include('lib/**/*.rb')
38
+ end
39
+
40
+ begin
41
+ require 'rcov/rcovtask'
42
+ Rcov::RcovTask.new do |t|
43
+ t.libs << 'test'
44
+ t.test_files = FileList['test/**/*_test.rb']
45
+ t.verbose = true
46
+ end
47
+ rescue LoadError
48
+ end
49
+
50
+ desc "Run all specs in spec directory"
51
+ task :spec do |t|
52
+ options = "--colour --format progress --loadby --reverse"
53
+ files = FileList['spec/**/*_spec.rb']
54
+ system("spec #{options} #{files}")
55
+ end
56
+
57
+ task :default => :spec
data/VERSION.yml ADDED
@@ -0,0 +1,5 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 3
4
+ :build:
5
+ :patch: 37
data/bin/cap-recipes ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../lib/capify'
3
+
4
+ CapRecipes.start(ARGV)
@@ -0,0 +1,128 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{cap-recipes}
8
+ s.version = "0.3.36"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Nathan Esquenazi"]
12
+ s.date = %q{2010-10-12}
13
+ s.default_executable = %q{cap-recipes}
14
+ s.description = %q{Battle-tested capistrano recipes for debian, passenger, apache, delayed_job, juggernaut, rubygems, backgroundrb, rails and more}
15
+ s.email = %q{nesquena@gmail.com}
16
+ s.executables = ["cap-recipes"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.textile"
20
+ ]
21
+ s.files = [
22
+ ".gitignore",
23
+ "LICENSE",
24
+ "README.textile",
25
+ "Rakefile",
26
+ "VERSION.yml",
27
+ "bin/cap-recipes",
28
+ "cap-recipes.gemspec",
29
+ "examples/advanced/deploy.rb",
30
+ "examples/advanced/deploy/experimental.rb",
31
+ "examples/advanced/deploy/production.rb",
32
+ "examples/simple/deploy.rb",
33
+ "lib/cap_recipes.rb",
34
+ "lib/cap_recipes/tasks/apache.rb",
35
+ "lib/cap_recipes/tasks/apache/install.rb",
36
+ "lib/cap_recipes/tasks/apache/manage.rb",
37
+ "lib/cap_recipes/tasks/aptitude.rb",
38
+ "lib/cap_recipes/tasks/aptitude/manage.rb",
39
+ "lib/cap_recipes/tasks/backgroundrb.rb",
40
+ "lib/cap_recipes/tasks/backgroundrb/hooks.rb",
41
+ "lib/cap_recipes/tasks/backgroundrb/manage.rb",
42
+ "lib/cap_recipes/tasks/bundler.rb",
43
+ "lib/cap_recipes/tasks/bundler/manage.rb",
44
+ "lib/cap_recipes/tasks/delayed_job.rb",
45
+ "lib/cap_recipes/tasks/delayed_job/hooks.rb",
46
+ "lib/cap_recipes/tasks/delayed_job/manage.rb",
47
+ "lib/cap_recipes/tasks/ec2/install.rb",
48
+ "lib/cap_recipes/tasks/ec2/manage.rb",
49
+ "lib/cap_recipes/tasks/gitosis.rb",
50
+ "lib/cap_recipes/tasks/gitosis/install.rb",
51
+ "lib/cap_recipes/tasks/gitosis/manage.rb",
52
+ "lib/cap_recipes/tasks/jetty.rb",
53
+ "lib/cap_recipes/tasks/jetty/install.rb",
54
+ "lib/cap_recipes/tasks/jetty/manage.rb",
55
+ "lib/cap_recipes/tasks/jetty/web.rb",
56
+ "lib/cap_recipes/tasks/juggernaut.rb",
57
+ "lib/cap_recipes/tasks/juggernaut/hooks.rb",
58
+ "lib/cap_recipes/tasks/juggernaut/manage.rb",
59
+ "lib/cap_recipes/tasks/maven.rb",
60
+ "lib/cap_recipes/tasks/memcache.rb",
61
+ "lib/cap_recipes/tasks/memcache/hooks.rb",
62
+ "lib/cap_recipes/tasks/memcache/install.rb",
63
+ "lib/cap_recipes/tasks/memcache/manage.rb",
64
+ "lib/cap_recipes/tasks/mongodb.rb",
65
+ "lib/cap_recipes/tasks/mongodb/install.rb",
66
+ "lib/cap_recipes/tasks/mongodb/manage.rb",
67
+ "lib/cap_recipes/tasks/passenger.rb",
68
+ "lib/cap_recipes/tasks/passenger/install.rb",
69
+ "lib/cap_recipes/tasks/passenger/manage.rb",
70
+ "lib/cap_recipes/tasks/rails.rb",
71
+ "lib/cap_recipes/tasks/rails/hooks.rb",
72
+ "lib/cap_recipes/tasks/rails/manage.rb",
73
+ "lib/cap_recipes/tasks/ruby.rb",
74
+ "lib/cap_recipes/tasks/ruby/install.rb",
75
+ "lib/cap_recipes/tasks/rubygems.rb",
76
+ "lib/cap_recipes/tasks/rubygems/install.rb",
77
+ "lib/cap_recipes/tasks/rubygems/manage.rb",
78
+ "lib/cap_recipes/tasks/templates/tomcat.erb",
79
+ "lib/cap_recipes/tasks/thinking_sphinx.rb",
80
+ "lib/cap_recipes/tasks/thinking_sphinx/hooks.rb",
81
+ "lib/cap_recipes/tasks/thinking_sphinx/install.rb",
82
+ "lib/cap_recipes/tasks/thinking_sphinx/manage.rb",
83
+ "lib/cap_recipes/tasks/tomcat.rb",
84
+ "lib/cap_recipes/tasks/tomcat/install.rb",
85
+ "lib/cap_recipes/tasks/tomcat/manage.rb",
86
+ "lib/cap_recipes/tasks/tomcat/war.rb",
87
+ "lib/cap_recipes/tasks/utilities.rb",
88
+ "lib/cap_recipes/tasks/whenever.rb",
89
+ "lib/cap_recipes/tasks/whenever/hooks.rb",
90
+ "lib/cap_recipes/tasks/whenever/manage.rb",
91
+ "lib/cap_recipes/tasks/yum.rb",
92
+ "lib/cap_recipes/tasks/yum/manage.rb",
93
+ "lib/capify.rb",
94
+ "lib/templates/Capfile.tt",
95
+ "lib/templates/deploy.rb.tt",
96
+ "spec/cap/all/Capfile",
97
+ "spec/cap/helper.rb",
98
+ "spec/cap_recipes_spec.rb",
99
+ "spec/spec_helper.rb",
100
+ "specs.watchr"
101
+ ]
102
+ s.homepage = %q{http://github.com/nesquena/cap-recipes}
103
+ s.rdoc_options = ["--charset=UTF-8"]
104
+ s.require_paths = ["lib"]
105
+ s.rubyforge_project = %q{cap-recipes}
106
+ s.rubygems_version = %q{1.3.7}
107
+ s.summary = %q{Battle-tested capistrano recipes for passenger, delayed_job, and more}
108
+ s.test_files = [
109
+ "spec/cap_recipes_spec.rb",
110
+ "spec/spec_helper.rb",
111
+ "spec/cap/helper.rb",
112
+ "examples/advanced/deploy/production.rb",
113
+ "examples/advanced/deploy/experimental.rb",
114
+ "examples/advanced/deploy.rb",
115
+ "examples/simple/deploy.rb"
116
+ ]
117
+
118
+ if s.respond_to? :specification_version then
119
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
120
+ s.specification_version = 3
121
+
122
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
123
+ else
124
+ end
125
+ else
126
+ end
127
+ end
128
+
@@ -0,0 +1,39 @@
1
+ # =============================================================================
2
+ # GENERAL SETTINGS
3
+ # =============================================================================
4
+
5
+ set :application, "demo"
6
+ set :deploy_to, "/var/apps/#{application}"
7
+ set :deploy_via, :remote_cache
8
+ set :scm, :git
9
+ set :repository, "deploy@dev.demo.com:/home/demo.git"
10
+ set :git_enable_submodules, 1
11
+ set :keep_releases, 3
12
+
13
+ # =============================================================================
14
+ # STAGE SETTINGS
15
+ # =============================================================================
16
+
17
+ # set :default_stage, "experimental"
18
+ set :stages, %w(production experimental)
19
+ set :default_stage, "experimental"
20
+ require 'capistrano/ext/multistage'
21
+
22
+ # =============================================================================
23
+ # RECIPE INCLUDES
24
+ # =============================================================================
25
+
26
+ require 'rubygems'
27
+ require 'cap_recipes/tasks/whenever'
28
+ require 'cap_recipes/tasks/apache'
29
+ require 'cap_recipes/tasks/passenger'
30
+ require 'cap_recipes/tasks/memcache'
31
+ require 'cap_recipes/tasks/juggernaut'
32
+ require 'cap_recipes/tasks/delayed_job'
33
+ require 'cap_recipes/tasks/rails'
34
+
35
+ ssh_options[:paranoid] = false
36
+ default_run_options[:pty] = true
37
+
38
+ # PASSENGER
39
+ set :base_ruby_path, '/opt/ruby-enterprise' # not /usr
@@ -0,0 +1,14 @@
1
+ # Domain
2
+ role :web, "stage.app.com"
3
+ role :app, "stage.app.com"
4
+ role :db, "stage.app.com", :primary => true
5
+
6
+ # GENERAL
7
+ set :user, "deploy"
8
+ set :runner, "deploy"
9
+ set :password, "demo567"
10
+ set :use_sudo, true
11
+ ssh_options[:keys] = [File.join(ENV["HOME"], ".ssh", "demo")]
12
+
13
+ # Branch
14
+ set :branch, 'develop'
@@ -0,0 +1,20 @@
1
+ # Domain
2
+ role :web, "demo.app.com"
3
+ role :app, "demo.app.com"
4
+ role :db, "demo.app.com", :primary => true
5
+ role :juggernaut, "juggernaut.app.com", :no_release => true
6
+ role :delayed_job, "dj.app.com", :no_release => true
7
+ role :memcache, "memcache.app.com", :no_release => true
8
+
9
+ # GENERAL
10
+ set :user, "deploy"
11
+ set :runner, "deploy"
12
+ set :password, "demo567"
13
+ set :use_sudo, true
14
+ set :juggernaut_role, :juggernaut
15
+ set :delayed_job_role, :delayed_job
16
+ set :memcache_role, :memcache
17
+ ssh_options[:keys] = [File.join(ENV["HOME"], ".ssh", "demo")]
18
+
19
+ # Branch
20
+ set :branch, 'master'
@@ -0,0 +1,36 @@
1
+ # =============================================================================
2
+ # GENERAL SETTINGS
3
+ # =============================================================================
4
+
5
+ role :web, "demo.app.com"
6
+ role :app, "demo.app.com"
7
+ role :db, "demo.app.com", :primary => true
8
+
9
+ set :application, "demo"
10
+ set :deploy_to, "/var/apps/#{application}"
11
+ set :deploy_via, :remote_cache
12
+ set :scm, :git
13
+ set :repository, "deploy@dev.demo.com:/home/demo.git"
14
+ set :git_enable_submodules, 1
15
+ set :keep_releases, 3
16
+ set :user, "deploy"
17
+ set :runner, "deploy"
18
+ set :password, "demo567"
19
+ set :use_sudo, true
20
+ set :branch, 'production'
21
+
22
+ # =============================================================================
23
+ # RECIPE INCLUDES
24
+ # =============================================================================
25
+
26
+ require 'rubygems'
27
+ require 'cap_recipes/tasks/whenever'
28
+ require 'cap_recipes/tasks/apache'
29
+ require 'cap_recipes/tasks/passenger'
30
+ require 'cap_recipes/tasks/memcache'
31
+ require 'cap_recipes/tasks/juggernaut'
32
+ require 'cap_recipes/tasks/delayed_job'
33
+ require 'cap_recipes/tasks/rails'
34
+
35
+ ssh_options[:paranoid] = false
36
+ default_run_options[:pty] = true
@@ -0,0 +1 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'cap_recipes/tasks/*.rb')].sort.each { |lib| require lib }
@@ -0,0 +1 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'apache/*.rb')].sort.each { |lib| require lib }
@@ -0,0 +1,16 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../utilities')
2
+
3
+ Capistrano::Configuration.instance(true).load do
4
+
5
+ namespace :apache do
6
+
7
+ desc 'Installs apache 2 and development headers to compile passenger'
8
+ task :install, :roles => :web do
9
+ puts 'Installing apache 2'
10
+ utilities.apt_install %w[apache2 apache2.2-common apache2-mpm-prefork apache2-utils
11
+ libexpat1 ssl-cert libapr1 libapr1-dev libaprutil1 libmagic1
12
+ libpcre3 libpq5 openssl apache2-prefork-dev]
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,26 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+
3
+ set :apache_init_path, "/etc/init.d/apache2"
4
+
5
+ namespace :apache do
6
+
7
+ desc "Stops the apache web server"
8
+ task :stop, :roles => :web do
9
+ puts "Stopping the apache server"
10
+ sudo "#{apache_init_path} stop"
11
+ end
12
+
13
+ desc "Starts the apache web server"
14
+ task :start, :roles => :web do
15
+ puts "Starting the apache server"
16
+ sudo "#{apache_init_path} start"
17
+ end
18
+
19
+ desc "Restarts the apache web server"
20
+ task :restart, :roles => :web do
21
+ puts "Restarting the apache server"
22
+ sudo "#{apache_init_path} restart"
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'aptitude/*.rb')].sort.each { |lib| require lib }
@@ -0,0 +1,32 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../utilities')
2
+
3
+ Capistrano::Configuration.instance(true).load do
4
+ namespace :aptitude do
5
+ desc "Updates all installed packages on aptitude package system"
6
+ task :updates do
7
+ sudo "apt-get -qy update"
8
+ utilities.apt_upgrade
9
+ sudo "apt-get -qy autoremove"
10
+ end
11
+
12
+ desc "Installs a specified aptitude package"
13
+ task :install do
14
+ deb_pkg_name = utilities.ask "Enter name of the package(s) you wish to install:"
15
+ raise "Please specify deb_pkg_name" if deb_pkg_name == ''
16
+ logger.info "Updating packages..."
17
+ sudo "aptitude update"
18
+ logger.info "Installing #{deb_pkg_name}..."
19
+ utilities.apt_install deb_pkg_name
20
+ end
21
+
22
+ desc "Removes a specified aptitude package"
23
+ task :remove do
24
+ deb_pkg_name = utilities.ask "Enter name of the package(s) you wish to remove:"
25
+ raise "Please specify deb_pkg_name" if deb_pkg_name == ''
26
+ logger.info "Updating packages..."
27
+ sudo "aptitude update"
28
+ logger.info "Removing #{deb_pkg_name}..."
29
+ utilities.sudo_with_input "apt-get remove --purge #{deb_pkg_name}", /^Do you want to continue\?/
30
+ end
31
+ end
32
+ end
@@ -0,0 +1 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'backgroundrb/*.rb')].sort.each { |lib| require lib }
@@ -0,0 +1,5 @@
1
+ Capistrano::Configuration.instance(true).load do
2
+ after "deploy:update_code" , "backgroundrb:symlink_config"
3
+ after "deploy:restart" , "backgroundrb:restart"
4
+ after "backgroundrb:restart" , "backgroundrb:repair_permissions"
5
+ end
@@ -0,0 +1,64 @@
1
+ require 'yaml'
2
+
3
+ Capistrano::Configuration.instance(true).load do
4
+ set :backgroundrb_host, 'localhost'
5
+ set :backgroundrb_env , 'production'
6
+ set :base_ruby_path, '/usr'
7
+
8
+ namespace :backgroundrb do
9
+ # ===============================================================
10
+ # PROCESS MANAGEMENT
11
+ # ===============================================================
12
+
13
+ desc "Stops the backgroundrb worker processes"
14
+ task :stop, :roles => :app do
15
+ run "cd #{current_path} && #{sudo} #{base_ruby_path}/bin/ruby script/backgroundrb stop"
16
+ end
17
+
18
+ desc "Starts the backgroundrb worker processes"
19
+ task :start, :roles => :app do
20
+ run "cd #{current_path} && #{sudo} nohup #{base_ruby_path}/bin/ruby script/backgroundrb start"
21
+ end
22
+
23
+ desc "Restarts a running backgroundrb server."
24
+ task :restart, :roles => :app do
25
+ backgroundrb.stop
26
+ sleep(5) # sleep for 5 seconds to make sure the server has mopped up everything
27
+ backgroundrb.start
28
+ end
29
+
30
+ # ===============================================================
31
+ # PROCESS CONFIGURATION
32
+ # ===============================================================
33
+
34
+ desc "Creates configuration file for the backgroundrb server"
35
+ task :configure, :roles => :app do
36
+ config = { :backgroundrb => {:ip => backgroundrb_host, :port => backgroundrb_port, :environment => backgroundrb_env} }
37
+ backgroundrb_yml = config.to_yaml
38
+
39
+ run "if [ ! -d #{shared_path}/config ]; then mkdir #{shared_path}/config; fi"
40
+ put(backgroundrb_yml, "#{shared_path}/config/backgroundrb.yml", :mode => 0644)
41
+ end
42
+
43
+ # ===============================================================
44
+ # FILE MANAGEMENT
45
+ # ===============================================================
46
+
47
+ desc "Symlinks the shared/config/backgroundrb yaml to release/config/"
48
+ task :symlink_config, :roles => :app do
49
+ run "ln -s #{shared_path}/config/backgroundrb.yml #{release_path}/config/backgroundrb.yml"
50
+ end
51
+
52
+ desc "Displays the backgroundrb log from the server"
53
+ task :tail do
54
+ stream "tail -f #{shared_path}/log/backgroundrb_#{backgroundrb_port}.log"
55
+ end
56
+
57
+ desc "Repair permissions to allow user to perform all actions"
58
+ task :repair_permissions, :roles => :app do
59
+ puts "Applying correct permissions to allow for proper command execution"
60
+ try_sudo "chown -R #{user}:#{user} #{current_path}"
61
+ try_sudo "chown -R #{user}:#{user} #{current_path}/tmp"
62
+ end
63
+ end
64
+ end