capper 0.2.4 → 0.3.0
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/capper.gemspec +1 -1
- data/lib/capper/base.rb +23 -4
- data/lib/capper/bundler.rb +3 -0
- data/lib/capper/config.rb +15 -3
- data/lib/capper/gem.rb +7 -0
- data/lib/capper/hoptoad.rb +25 -0
- data/lib/capper/rvm.rb +3 -0
- metadata +12 -10
data/capper.gemspec
CHANGED
data/lib/capper/base.rb
CHANGED
@@ -4,10 +4,10 @@ unless Capistrano::Configuration.respond_to?(:instance)
|
|
4
4
|
abort "capper requires Capistrano 2"
|
5
5
|
end
|
6
6
|
|
7
|
-
# add some nice colors
|
8
|
-
require "capistrano_colors"
|
9
|
-
|
10
7
|
# mixin various helpers
|
8
|
+
require 'capistrano_colors/configuration'
|
9
|
+
require 'capistrano_colors/logger'
|
10
|
+
|
11
11
|
require 'capper/utils/load'
|
12
12
|
|
13
13
|
require 'capper/utils/templates'
|
@@ -18,6 +18,24 @@ include Capper::Utils::Multistage
|
|
18
18
|
|
19
19
|
# define a bunch of defaults that make sense
|
20
20
|
Capper.load do
|
21
|
+
# do not trace by default
|
22
|
+
logger.level = Capistrano::Logger::DEBUG
|
23
|
+
|
24
|
+
# add custom color scheme
|
25
|
+
colorize([
|
26
|
+
{ :match => /executing `.*/, :color => :yellow, :level => 2, :prio => -10, :attribute => :bright, :prepend => "== Currently " },
|
27
|
+
{ :match => /executing ".*/, :color => :magenta, :level => 2, :prio => -20 },
|
28
|
+
{ :match => /sftp upload complete/, :color => :hide, :level => 2, :prio => -20 },
|
29
|
+
|
30
|
+
{ :match => /^transaction:.*/, :color => :blue, :level => 1, :prio => -10, :attribute => :bright },
|
31
|
+
{ :match => /.*out\] (fatal:|ERROR:).*/, :color => :red, :level => 1, :prio => -10 },
|
32
|
+
{ :match => /Permission denied/, :color => :red, :level => 1, :prio => -20 },
|
33
|
+
{ :match => /sh: .+: command not found/, :color => :magenta, :level => 1, :prio => -30 },
|
34
|
+
|
35
|
+
{ :match => /^err ::/, :color => :red, :level => 0, :prio => -10 },
|
36
|
+
{ :match => /.*/, :color => :blue, :level => 0, :prio => -20, :attribute => :bright },
|
37
|
+
])
|
38
|
+
|
21
39
|
# apps should not require root access
|
22
40
|
set(:use_sudo, false)
|
23
41
|
set(:group_writable, false)
|
@@ -46,8 +64,9 @@ Capper.load do
|
|
46
64
|
will not destroy any deployed revisions or data.
|
47
65
|
DESC
|
48
66
|
task :setup, :except => { :no_release => true } do
|
67
|
+
shared = %w(system log pids) | shared_children
|
49
68
|
dirs = [releases_path, shared_path]
|
50
|
-
dirs +=
|
69
|
+
dirs += shared.map { |d| File.join(shared_path, d) }
|
51
70
|
run "mkdir -p #{dirs.join(' ')}"
|
52
71
|
end
|
53
72
|
end
|
data/lib/capper/bundler.rb
CHANGED
@@ -5,6 +5,9 @@ require 'bundler/capistrano'
|
|
5
5
|
require "capper/rvm"
|
6
6
|
|
7
7
|
Capper.load do
|
8
|
+
# always execute rake with bundler to make sure we use the right version
|
9
|
+
set(:rake, "bundle exec rake")
|
10
|
+
|
8
11
|
# do not install a global bundle
|
9
12
|
# instead, use the gemset selected by rvm_ruby_string
|
10
13
|
set(:bundle_dir) { File.join(shared_path, 'bundle', rvm_ruby_string) }
|
data/lib/capper/config.rb
CHANGED
@@ -1,13 +1,25 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/base' unless defined?(Capper)
|
2
2
|
|
3
3
|
Capper.load do
|
4
|
-
_cset(:config_repo
|
4
|
+
_cset(:config_repo, nil)
|
5
5
|
|
6
6
|
after "deploy:setup" do
|
7
|
-
|
7
|
+
unless config_repo.nil?
|
8
|
+
run "rm -rf #{config_path} && git clone -q #{config_repo} #{config_path}"
|
9
|
+
end
|
8
10
|
end
|
9
11
|
|
10
12
|
after "deploy:update_code" do
|
11
|
-
|
13
|
+
unless config_repo.nil?
|
14
|
+
run "cd #{config_path} && git pull -q"
|
15
|
+
end
|
16
|
+
|
17
|
+
fetch(:config_files, []).each do |f|
|
18
|
+
run "cp #{config_path}/#{f} #{release_path}/config/"
|
19
|
+
end
|
20
|
+
|
21
|
+
fetch(:symlinks, {}).each do |source, dest|
|
22
|
+
run "rm -rf #{release_path}/#{dest} && ln -nfs #{shared_path}/#{source} #{release_path}/#{dest}"
|
23
|
+
end
|
12
24
|
end
|
13
25
|
end
|
data/lib/capper/gem.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/base' unless defined?(Capper)
|
2
|
+
|
3
|
+
# hoptoad requires bundler
|
4
|
+
require 'capper/bundler'
|
5
|
+
|
6
|
+
Capper.load do
|
7
|
+
# redefine the notify task without after hooks, so we can use them in
|
8
|
+
# specific stages only.
|
9
|
+
namespace :hoptoad do
|
10
|
+
desc "Notify Hoptoad of the deployment"
|
11
|
+
task :notify, :except => { :no_release => true } do
|
12
|
+
rails_env = fetch(:hoptoad_env, fetch(:rails_env, "production"))
|
13
|
+
local_user = ENV['USER'] || ENV['USERNAME']
|
14
|
+
executable = fetch(:rake, 'rake')
|
15
|
+
|
16
|
+
notify_command = "#{executable} hoptoad:deploy TO=#{rails_env} REVISION=#{current_revision} REPO=#{repository} USER=#{local_user}"
|
17
|
+
notify_command << " DRY_RUN=true" if dry_run
|
18
|
+
notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY']
|
19
|
+
|
20
|
+
puts "Notifying Hoptoad of Deploy (#{notify_command})"
|
21
|
+
`#{notify_command}`
|
22
|
+
puts "Hoptoad Notification Complete."
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/capper/rvm.rb
CHANGED
@@ -3,6 +3,8 @@ require File.dirname(__FILE__) + '/base' unless defined?(Capper)
|
|
3
3
|
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
|
4
4
|
require 'rvm/capistrano'
|
5
5
|
|
6
|
+
require "capper/gem"
|
7
|
+
|
6
8
|
Capper.load do
|
7
9
|
set(:rvm_type, :user)
|
8
10
|
set(:rvm_ruby_string, File.read(".rvmrc").gsub(/^rvm use --create (.*)/, '\1').strip)
|
@@ -28,6 +30,7 @@ Capper.load do
|
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
33
|
+
before "rvm:setup", "gem:setup"
|
31
34
|
before "deploy:setup", "rvm:setup"
|
32
35
|
after "deploy:symlink", "rvm:trust_rvmrc"
|
33
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-08-02 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: erubis
|
16
|
-
requirement: &
|
16
|
+
requirement: &22259260 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *22259260
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: capistrano
|
27
|
-
requirement: &
|
27
|
+
requirement: &22258820 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *22258820
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: capistrano_colors
|
38
|
-
requirement: &
|
38
|
+
requirement: &22258400 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *22258400
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &22257900 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *22257900
|
58
58
|
description: Capistrano is a collection of opinionated Capistrano recipes
|
59
59
|
email:
|
60
60
|
- bb@xnull.de
|
@@ -76,7 +76,9 @@ files:
|
|
76
76
|
- lib/capper/base.rb
|
77
77
|
- lib/capper/bundler.rb
|
78
78
|
- lib/capper/config.rb
|
79
|
+
- lib/capper/gem.rb
|
79
80
|
- lib/capper/git.rb
|
81
|
+
- lib/capper/hoptoad.rb
|
80
82
|
- lib/capper/multistage.rb
|
81
83
|
- lib/capper/rails.rb
|
82
84
|
- lib/capper/rvm.rb
|