brightbox 2.3.5 → 2.3.6

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/Rakefile CHANGED
@@ -8,8 +8,13 @@ namespace :client do
8
8
 
9
9
  desc "Reinstall the client gem locally"
10
10
  task :reinstall => [:repackage] do
11
- sh %Q{sudo gem uninstall -x -v #{@client.version} #{@client.name} }
12
- sh %q{sudo gem install pkg/*.gem}
11
+ begin
12
+ sh %Q{sudo gem uninstall -x -v #{@client.version} #{@client.name} }
13
+ rescue RuntimeError => e
14
+ puts "Gem not installed, continuing."
15
+ end
16
+
17
+ sh %Q{sudo gem install pkg/#{@client.name}-#{@client.version}.gem}
13
18
  end
14
19
 
15
20
  end
data/bin/brightbox CHANGED
@@ -238,6 +238,9 @@ unless Rake::Task.task_defined?("db:check:config")
238
238
  #
239
239
  # Specify your specific Rails version if it is not vendored
240
240
  # depend :remote, :gem, "rails", "=2.2.2"
241
+ #
242
+ # Set the apt packages your application or gems require. e.g.
243
+ # depend :remote, :apt, "libxml2-dev"
241
244
 
242
245
  ## Local Shared Area
243
246
  # These are the list of files and directories that you want
data/brightbox-gemspec.rb CHANGED
@@ -20,9 +20,9 @@
20
20
  require File.join(File.dirname(__FILE__),"lib/brightbox/version")
21
21
  def add_common(spec)
22
22
  spec.version = Brightbox::VERSION
23
- spec.authors = ["John Leach","Neil Wilson","David Smalley"]
23
+ spec.authors = ["John Leach","Neil Wilson","David Smalley", "Caius Durling"]
24
24
  spec.email = "support@brightbox.co.uk"
25
- spec.homepage = "http://wiki.brightbox.co.uk/docs:thebrightboxgem"
25
+ spec.homepage = "http://wiki.brightbox.co.uk/docs:gemv2:start"
26
26
  spec.rubyforge_project = 'brightbox'
27
27
  spec.has_rdoc = false
28
28
  end
@@ -37,6 +37,9 @@ after "deploy:finalize_update",
37
37
  after "deploy:update",
38
38
  "deploy:cleanup"
39
39
 
40
+ after "deploy:initial",
41
+ "deploy:web:reload_if_new"
42
+
40
43
  after "deploy:start",
41
44
  "deploy:web:reload_if_new"
42
45
 
@@ -27,6 +27,17 @@ after "deploy:cold",
27
27
 
28
28
  namespace :configure do
29
29
 
30
+ # Runs the given block when generating webserver configuration is allowed.
31
+ #
32
+ # Basically, runs the block unless "set :generate_webserver_config, false" is in deploy.rb
33
+ def run_when_generating_webserver_config_allowed
34
+ if generate_webserver_config
35
+ yield if block_given?
36
+ else
37
+ logger.trace "Skipped - Not generating webserver config"
38
+ end
39
+ end
40
+
30
41
  [:nginx, :apache].each do |webserver|
31
42
  desc %Q{
32
43
  [internal]Create #{webserver.to_s} config. Creates a load balancing virtual host \
@@ -43,28 +54,30 @@ namespace :configure do
43
54
 
44
55
  }
45
56
  task webserver, :roles => :web, :except => {:no_release => true} do
46
- app_hosts = case mongrel_host
47
- when :local
48
- "localhost"
49
- when :remote
50
- roles[:app].servers.join(",")
51
- else
52
- mongrel_host
53
- end
54
- sudo on_one_line( <<-END
55
- #{send(webserver.to_s + "_setup")}
56
- -n #{application}
57
- -d #{domain}
58
- #{'-a '+domain_aliases if domain_aliases}
59
- -w #{File.join(current_path, 'public')}
60
- -h #{app_hosts}
61
- -p #{mongrel_port}
62
- -s #{mongrel_servers}
63
- #{'-m '+max_age if max_age}
64
- #{'-c '+ssl_certificate if ssl_certificate}
65
- #{'-k '+ssl_key if ssl_key}
66
- END
67
- )
57
+ run_when_generating_webserver_config_allowed do
58
+ app_hosts = case mongrel_host
59
+ when :local
60
+ "localhost"
61
+ when :remote
62
+ roles[:app].servers.join(",")
63
+ else
64
+ mongrel_host
65
+ end
66
+ sudo on_one_line( <<-END
67
+ #{send(webserver.to_s + "_setup")}
68
+ -n #{application}
69
+ -d #{domain}
70
+ #{'-a '+domain_aliases if domain_aliases}
71
+ -w #{File.join(current_path, 'public')}
72
+ -h #{app_hosts}
73
+ -p #{mongrel_port}
74
+ -s #{mongrel_servers}
75
+ #{"-m #{max_age}" if max_age}
76
+ #{"-c #{ssl_certificate}" if ssl_certificate}
77
+ #{"-k #{ssl_key}" if ssl_key}
78
+ END
79
+ )
80
+ end
68
81
  end
69
82
  end
70
83
 
@@ -32,19 +32,24 @@ namespace :configure do
32
32
 
33
33
  }
34
34
  task :apache, :roles => :web, :except => {:no_release => true} do
35
- sudo on_one_line( <<-END
36
- #{send("apache_setup")}
37
- -n #{application}
38
- -d #{domain}
39
- #{'-a '+domain_aliases if domain_aliases}
40
- -w #{File.join(current_path, 'public')}
41
- --passenger
42
- --railsenv #{rails_env}
43
- #{'-m '+max_age if max_age}
44
- #{'-c '+ssl_certificate if ssl_certificate}
45
- #{'-k '+ssl_key if ssl_key}
46
- END
47
- )
35
+ # Bail out if we don't want to generate config
36
+ run_when_generating_webserver_config_allowed do
37
+ # Create the configs
38
+ sudo on_one_line( <<-END
39
+ #{send("apache_setup")}
40
+ -n #{application}
41
+ -d #{domain}
42
+ #{'-a '+domain_aliases if domain_aliases}
43
+ -w #{File.join(current_path, 'public')}
44
+ --passenger
45
+ --railsenv #{rails_env}
46
+ #{"-m #{max_age}" if max_age}
47
+ #{"-c #{ssl_certificate}" if ssl_certificate}
48
+ #{"-k #{ssl_key}" if ssl_key}
49
+ #{"-i #{ssl_intermediate}" if ssl_intermediate}
50
+ END
51
+ )
52
+ end
48
53
  end
49
54
 
50
55
  task :mongrel, :roles => :app, :except => {:no_release => true} do
@@ -22,6 +22,10 @@
22
22
  # By default we require mongrel. In future we can just switch the default to passenger
23
23
  Capistrano::Configuration.instance(true).load File.join(File.dirname(__FILE__), 'deploy', 'mongrel.rb')
24
24
 
25
+ if File.exists?("config/deploy.local.rb")
26
+ Capistrano::Configuration.instance(true).load 'config/deploy.local.rb'
27
+ end
28
+
25
29
  namespace :deploy do
26
30
 
27
31
  namespace :web do
@@ -94,6 +98,7 @@ namespace :deploy do
94
98
  Execute Rake tasks that need to be run on all deployments
95
99
  }
96
100
  task :global, :except => {:no_release => true} do
101
+ packages.install
97
102
  gems.install
98
103
  end
99
104
 
@@ -30,4 +30,17 @@ def on_one_line(cmd_list)
30
30
  cmd_list.gsub!(/\n/m, ' ')
31
31
  end
32
32
 
33
-
33
+ # Override cap's depend method so we can intercept any calls we want to
34
+ # ourselves and act upon them.
35
+ alias :cap_depend :depend
36
+ # Our depend method
37
+ def depend location, type, *args
38
+ # So far we only care about :remote, :apt. Intercept only that
39
+ if location == :remote && [:apt].include?(type)
40
+ # "Translate" this into a :match call cap can handle for us.
41
+ cap_depend(:remote, :match, "dpkg-query --show -f '${Status}' -- #{args.first}", /^install ok installed$/)
42
+ else
43
+ # we don't want to interfere with this, send it on it's merry way
44
+ cap_depend(location, type, *args)
45
+ end
46
+ end
@@ -0,0 +1,34 @@
1
+ before "gems:install", "packages:install"
2
+
3
+ namespace :packages do
4
+
5
+ def install_package name
6
+ run %Q{dpkg-query --show -f '${Status}' #{name} 2>/dev/null|egrep -q "^install ok installed$" || sudo -p '#{sudo_prompt}' apt-get install -qy #{name}}
7
+ end
8
+
9
+ def package_dependencies?
10
+ matches = (fetch(:dependencies,{})[:remote]||{})[:match] || []
11
+ # Because we're given the entire dpkg-query command back, pull out just the package name
12
+ matches.select {|x| x.first[/dpkg-query --show -f '\$\{Status\}'/] }.map {|x| x.first[/\-\- (.+)$/, 1] }
13
+ end
14
+
15
+ def install_packages
16
+ deps = package_dependencies?
17
+ puts "Updating apt-get"
18
+ sudo "apt-get update -qy >/dev/null"
19
+ deps.each do |pkg|
20
+ name = pkg
21
+ puts "Checking for #{name}"
22
+ install_package(name)
23
+ end
24
+ end
25
+
26
+ desc %Q{
27
+ [internal]Run the packages install task in the application.
28
+ }
29
+ task :install, :except => {:no_release => true} do
30
+ puts "Checking required packages are installed"
31
+ install_packages
32
+ end
33
+
34
+ end
@@ -42,7 +42,9 @@ _cset :runner, user
42
42
  _cset :passenger_restart_strategy, :hard
43
43
  _cset :use_sudo, false
44
44
  _cset :ssl_certificate, nil
45
+ _cset :ssl_intermediate, nil
45
46
  _cset :ssl_key, nil
47
+ _cset :generate_webserver_config, true
46
48
  _cset :rails_env, "production"
47
49
  ssh_options[:forward_agent] = true
48
50
 
@@ -1,5 +1,5 @@
1
1
  module Brightbox
2
- VERSION = "2.3.5"
2
+ VERSION = "2.3.6"
3
3
  end
4
4
  # Set global scope version so that OptionParser picks it up.
5
5
  ::Version = Brightbox::VERSION
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brightbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.5
4
+ version: 2.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Leach
8
8
  - Neil Wilson
9
9
  - David Smalley
10
+ - Caius Durling
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
14
 
14
- date: 2009-05-05 00:00:00 +01:00
15
+ date: 2010-01-26 00:00:00 +00:00
15
16
  default_executable:
16
17
  dependencies:
17
18
  - !ruby/object:Gem::Dependency
@@ -37,24 +38,25 @@ files:
37
38
  - Rakefile
38
39
  - brightbox-gemspec.rb
39
40
  - lib/brightbox/maintenance.rb
40
- - lib/brightbox/passenger.rb
41
- - lib/brightbox/recipes/callbacks.rb
42
- - lib/brightbox/recipes/configure/mongrel.rb
43
- - lib/brightbox/recipes/configure/passenger.rb
41
+ - lib/brightbox/version.rb
42
+ - lib/brightbox/recipes.rb
44
43
  - lib/brightbox/recipes/configure.rb
44
+ - lib/brightbox/recipes/shared_assets.rb
45
+ - lib/brightbox/recipes/helpers.rb
46
+ - lib/brightbox/recipes/deploy.rb
47
+ - lib/brightbox/recipes/packages.rb
48
+ - lib/brightbox/recipes/variables.rb
45
49
  - lib/brightbox/recipes/database.rb
50
+ - lib/brightbox/recipes/configure/mongrel.rb
51
+ - lib/brightbox/recipes/configure/passenger.rb
46
52
  - lib/brightbox/recipes/deploy/mongrel.rb
47
53
  - lib/brightbox/recipes/deploy/passenger.rb
48
- - lib/brightbox/recipes/deploy.rb
49
54
  - lib/brightbox/recipes/gems.rb
50
- - lib/brightbox/recipes/helpers.rb
51
- - lib/brightbox/recipes/shared_assets.rb
52
- - lib/brightbox/recipes/variables.rb
53
- - lib/brightbox/recipes.rb
54
- - lib/brightbox/version.rb
55
+ - lib/brightbox/recipes/callbacks.rb
56
+ - lib/brightbox/passenger.rb
55
57
  - bin/brightbox
56
- has_rdoc: false
57
- homepage: http://wiki.brightbox.co.uk/docs:thebrightboxgem
58
+ has_rdoc: true
59
+ homepage: http://wiki.brightbox.co.uk/docs:gemv2:start
58
60
  licenses: []
59
61
 
60
62
  post_install_message:
@@ -77,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
79
  requirements: []
78
80
 
79
81
  rubyforge_project: brightbox
80
- rubygems_version: 1.3.2
82
+ rubygems_version: 1.3.5
81
83
  signing_key:
82
84
  specification_version: 3
83
85
  summary: Brightbox rails deployment scripts for Capistrano