rubber 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,3 +1,18 @@
1
+ 1.1.7
2
+ -----
3
+
4
+ Merge branch 'master' of github.com:wr0ngway/rubber <cb39353> [Matt Conway]
5
+ fix for new security group param name in amazon-ec2 <a9f9b19> [Matt Conway]
6
+ Only raise an exception if there's a problem. <890837b> [nirvdrum]
7
+ Merge remote branch 'nirvdrum/resque2' <09fd5b8> [Matt Conway]
8
+ Merge remote branch 'nirvdrum/master' <0c99d7d> [Matt Conway]
9
+ use rubygems for crontab too <08d1d51> [Matt Conway]
10
+ munin needs a mailer for notifications <d933a8c> [Matt Conway]
11
+ Switched to the Jetty Hightide distribution to get JSP, JTA, and a few other niceties. <6d1b1a9> [Kevin Menard]
12
+ Bumped passenger version. <79feda0> [Kevin Menard]
13
+ Allow a configurable number of resque workers. <0587b40> [Kevin Menard]
14
+ Added support for resque. <67ae003> [Kevin Menard]
15
+
1
16
  1.1.6
2
17
  -----
3
18
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.6
1
+ 1.1.7
@@ -59,4 +59,8 @@ Listen <%= rubber_env.web_tools_ssl_port %>
59
59
  ProxyHTMLURLMap / /monit_<%= ic.name %>/
60
60
  <% end %>
61
61
 
62
+ <% if resque_host = rubber_instances.for_role('resque').first %>
63
+ RackBaseURI /resque
64
+ <% end %>
65
+
62
66
  </VirtualHost>
@@ -24,6 +24,10 @@
24
24
  <% rubber_instances.sort {|a,b| a.name <=> b.name }.each do |ic| %>
25
25
  <li><a href="/monit_<%= ic.name %>/">Monit <%= ic.name %></a></li>
26
26
  <% end %>
27
+
28
+ <% if resque_host = rubber_instances.for_role('resque').first %>
29
+ <li><a href="/resque/">Resque</a></li>
30
+ <% end %>
27
31
 
28
32
  </ul>
29
33
  </body>
@@ -8,6 +8,7 @@ MAILTO=<%= rubber_env.admin_email %>
8
8
  # don't need to set RUBBER_ENV for each script since we set it for all cron here
9
9
  RUBBER_ENV=<%= RUBBER_ENV %>
10
10
  RAILS_ENV=<%= RUBBER_ENV %>
11
+ RUBYOPT=rubygems
11
12
 
12
13
  # Roll all rails logs at midnight
13
14
  0 0 * * * LOG_DIR=<%= RUBBER_ROOT %>/log <%= RUBBER_ROOT %>/script/cron-rake rubber:rotate_logs
@@ -9,23 +9,26 @@ namespace :rubber do
9
9
 
10
10
  task :custom_install, :roles => :jetty do
11
11
  rubber.sudo_script 'install_jetty', <<-ENDSCRIPT
12
- if [[ -z `ls #{rubber_env.jetty_dir} 2> /dev/null` ]]; then
13
- wget -q http://ftp.osuosl.org/pub/eclipse/jetty/#{rubber_env.jetty_version}/dist/jetty-distribution-#{rubber_env.jetty_version}.tar.gz
14
- tar -zxf jetty-distribution-#{rubber_env.jetty_version}.tar.gz
12
+ if [[ -z `ls #{rubber_env.jetty_prefix}/jetty-hightide-#{rubber_env.jetty_version} 2> /dev/null` ]]; then
13
+ wget -q http://dist.codehaus.org/jetty/jetty-hightide-7.0.0/jetty-hightide-#{rubber_env.jetty_version}.tar.gz
14
+ tar -zxf jetty-hightide-#{rubber_env.jetty_version}.tar.gz
15
15
 
16
16
  # Install to appropriate location.
17
- mv jetty-distribution-#{rubber_env.jetty_version} #{rubber_env.jetty_prefix}
18
- ln -s #{rubber_env.jetty_prefix}/jetty-distribution-#{rubber_env.jetty_version} #{rubber_env.jetty_dir}
17
+ mv jetty-hightide-#{rubber_env.jetty_version} #{rubber_env.jetty_prefix}
18
+ rm -f #{rubber_env.jetty_dir}
19
+ ln -s #{rubber_env.jetty_prefix}/jetty-hightide-#{rubber_env.jetty_version} #{rubber_env.jetty_dir}
19
20
  chmod 744 #{rubber_env.jetty_dir}/bin/*.sh
20
21
 
21
22
  # Cleanup the jetty distribution
22
- rm #{rubber_env.jetty_dir}/webapps/*
23
+ rm -r #{rubber_env.jetty_dir}/webapps/*
23
24
  rm -r #{rubber_env.jetty_dir}/contexts/test.d/
24
- mv #{rubber_env.jetty_dir}/contexts/demo.xml #{rubber_env.jetty_dir}/contexts/demo.xml.example
25
- mv #{rubber_env.jetty_dir}/contexts/javadoc.xml #{rubber_env.jetty_dir}/contexts/javadoc.xml.example
26
-
25
+
26
+ for file in #{rubber_env.jetty_dir}/contexts/*.xml; do
27
+ mv $file $file.example
28
+ done
29
+
27
30
  # Cleanup after ourselves.
28
- rm jetty-distribution-#{rubber_env.jetty_version}.tar.gz
31
+ rm jetty-hightide-#{rubber_env.jetty_version}.tar.gz
29
32
  fi
30
33
  ENDSCRIPT
31
34
  end
@@ -1,6 +1,6 @@
1
1
  # Uses admin_email from base
2
2
 
3
- packages: [munin-node, munin-plugins-extra]
3
+ packages: [munin-node, munin-plugins-extra, mailx]
4
4
 
5
5
  roles:
6
6
  web_tools:
@@ -1,4 +1,4 @@
1
- passenger_version: 2.2.5
1
+ passenger_version: 2.2.8
2
2
  passenger_root: "#{ruby_prefix}/lib/ruby/gems/1.8/gems/passenger-#{passenger_version}"
3
3
  passenger_ruby: "#{ruby_prefix}/bin/ruby"
4
4
  passenger_lib: "#{passenger_root}/ext/apache2/mod_passenger.so"
@@ -0,0 +1,38 @@
1
+ namespace :rubber do
2
+
3
+ namespace :resque_worker_default do
4
+
5
+ rubber.allow_optional_tasks(self)
6
+
7
+ before "deploy:stop", "rubber:resque_worker_default:stop"
8
+ after "deploy:start", "rubber:resque_worker_default:start"
9
+ after "deploy:restart", "rubber:resque_worker_default:restart"
10
+
11
+ desc "Starts default resque worker"
12
+ task :start, :roles => :resque_worker_default do
13
+ as = fetch(:runner, "app")
14
+ via = fetch(:run_method, :sudo)
15
+ rubber_env.resque_worker_default_count.times do |i|
16
+ invoke_command "sh -c 'cd #{current_path}; RAILS_ENV=#{rails_env} QUEUE=* nohup rake resque:work &> log/resque_worker_default_#{i}.log & echo $! > tmp/pids/resque_worker_default_#{i}.pid'", :via => via, :as => as
17
+ end
18
+ end
19
+
20
+ desc "Stops default resque worker"
21
+ task :stop, :roles => :resque_worker_default do
22
+ as = fetch(:runner, "app")
23
+ via = fetch(:run_method, :sudo)
24
+ rubber_env.resque_worker_default_count.times do |i|
25
+ invoke_command "sh -c 'cd #{current_path} && kill `cat tmp/pids/resque_worker_default_#{i}.pid` && rm -f tmp/pids/resque_worker_default_#{i}.pid; exit 0;'", :via => via, :as => as
26
+ end
27
+
28
+ sleep 11 #wait for process to finish
29
+ end
30
+
31
+ desc "Restarts default resque worker"
32
+ task :restart, :roles => :resque_worker_default do
33
+ rubber.resque_worker_default.stop
34
+ rubber.resque_worker_default.start
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,39 @@
1
+
2
+ namespace :rubber do
3
+
4
+ namespace :resque do
5
+
6
+ rubber.allow_optional_tasks(self)
7
+
8
+ after "rubber:install_packages", "rubber:resque:custom_install"
9
+
10
+ task :custom_install, :roles => :resque do
11
+ rubber.sudo_script 'install_resque', <<-ENDSCRIPT
12
+ if [ -d resque ]; then
13
+ rm -r resque
14
+ fi
15
+
16
+ git clone git://github.com/defunkt/resque.git
17
+
18
+ if [ -d #{rubber_env.resque_web_dir} ]; then
19
+ rm -r #{rubber_env.resque_web_dir}
20
+ fi
21
+
22
+ mkdir -p #{rubber_env.resque_web_dir}
23
+ mkdir #{rubber_env.resque_web_dir}/tmp
24
+ mv resque/config.ru #{rubber_env.resque_web_dir}
25
+ mv resque/lib/resque/server/* #{rubber_env.resque_web_dir}/
26
+
27
+ rm -f /var/www/resque
28
+ ln -s #{rubber_env.resque_web_dir}/public /var/www/resque
29
+ ENDSCRIPT
30
+ end
31
+
32
+ after "rubber:setup_app_permissions", "rubber:resque:setup_resque_permissions"
33
+
34
+ task :setup_resque_permissions, :roles => :resque do
35
+ run "chown -R #{rubber_env.app_user}:#{rubber_env.app_user} #{rubber_env.resque_web_dir}/config.ru"
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,19 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-resque_worker_default.conf'
3
+ %>
4
+
5
+ <% rubber_env.resque_worker_default_count.times do |i| %>
6
+ <%
7
+ PIDFILE = "#{RUBBER_ROOT}/tmp/pids/resque_worker_default_#{i}.pid"
8
+
9
+ start_program = "/usr/bin/sudo -u #{rubber_env.app_user} sh -c 'cd #{RUBBER_ROOT}; RAILS_ENV=#{RUBBER_ENV} QUEUE=* nohup rake resque:work &> log/resque_worker_default_#{i}.log & echo $! > tmp/pids/resque_worker_default_#{i}.pid'"
10
+ stop_program = "/usr/bin/sudo -u #{rubber_env.app_user} sh -c 'cd #{RUBBER_ROOT} && kill `cat tmp/pids/resque_worker_default_#{i}.pid` && rm -f tmp/pids/resque_worker_default_#{i}.pid'"
11
+ %>
12
+
13
+ check process resque_worker_default_<%= i %> with pidfile <%= PIDFILE %>
14
+ group resque_worker_default
15
+ start program = "<%= start_program %>"
16
+ stop program = "<%= stop_program %>"
17
+
18
+ if totalmem > 200.0 MB for 5 cycles then restart
19
+ <% end %>
@@ -0,0 +1,10 @@
1
+ resque_web_dir: /opt/resque
2
+
3
+ resque_worker_default_count: 5
4
+
5
+ role_dependencies:
6
+ css_validator: [redis]
7
+
8
+ roles:
9
+ resque:
10
+ gems: [redis redis-namespace yajl-ruby sinatra resque]
@@ -0,0 +1,3 @@
1
+ description: The resque background queue system
2
+ dependent_templates:
3
+ - redis
@@ -17,7 +17,7 @@ module Rubber
17
17
 
18
18
 
19
19
  def create_instance(ami, ami_type, security_groups, availability_zone)
20
- response = @ec2.run_instances(:image_id => ami, :key_name => @aws_env.key_name, :instance_type => ami_type, :group_id => security_groups, :availability_zone => availability_zone)
20
+ response = @ec2.run_instances(:image_id => ami, :key_name => @aws_env.key_name, :instance_type => ami_type, :security_group => security_groups, :availability_zone => availability_zone)
21
21
  instance_id = response.instancesSet.item[0].instanceId
22
22
  return instance_id
23
23
  end
@@ -255,7 +255,7 @@ module Rubber
255
255
 
256
256
  def destroy_image(image_id)
257
257
  image = describe_images(image_id).first
258
- raise "Could not find image: #{image_id}, aborting destroy_image"
258
+ raise "Could not find image: #{image_id}, aborting destroy_image" if image.nil?
259
259
  image_location = image[:location]
260
260
  bucket = image_location.split('/').first
261
261
  image_name = image_location.split('/').last.gsub(/\.manifest\.xml$/, '')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubber
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Conway
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-13 00:00:00 -05:00
12
+ date: 2009-12-22 00:00:00 -05:00
13
13
  default_executable: vulcanize
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.5.0
33
+ version: 0.7.8
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: aws-s3
@@ -219,6 +219,11 @@ files:
219
219
  - generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf
220
220
  - generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml
221
221
  - generators/vulcanize/templates/redis/templates.yml
222
+ - generators/vulcanize/templates/resque/config/rubber/deploy-resque-worker-default.rb
223
+ - generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb
224
+ - generators/vulcanize/templates/resque/config/rubber/role/resque_worker_default/monit-resque_worker_default.conf
225
+ - generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml
226
+ - generators/vulcanize/templates/resque/templates.yml
222
227
  - generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml
223
228
  - generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb
224
229
  - generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab