capistrano-fanfare 0.0.19 → 0.0.20
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/Gemfile +5 -1
- data/Guardfile +4 -0
- data/capistrano-fanfare.gemspec +3 -1
- data/lib/capistrano/fanfare/campfire.rb +25 -7
- data/lib/capistrano/fanfare/version.rb +1 -1
- data/spec/campfire_spec.rb +38 -0
- data/spec/fixtures/campfire/campfire.yml +4 -0
- metadata +43 -18
data/Gemfile
CHANGED
data/Guardfile
ADDED
data/capistrano-fanfare.gemspec
CHANGED
@@ -18,8 +18,10 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.add_dependency "capistrano", "~> 2.11.1"
|
19
19
|
gem.add_dependency "capistrano_colors", "~> 0.5"
|
20
20
|
gem.add_dependency "sushi", "~> 0.0.2"
|
21
|
+
gem.add_dependency "multi_json", "~> 1.0"
|
21
22
|
|
22
|
-
gem.add_development_dependency "minitest", "~> 2.
|
23
|
+
gem.add_development_dependency "minitest", "~> 2.12.0"
|
23
24
|
gem.add_development_dependency "minitest-capistrano", "~> 0.0"
|
24
25
|
gem.add_development_dependency "timecop", "~> 0.3"
|
26
|
+
gem.add_development_dependency "mocha", "~> 0.10.5"
|
25
27
|
end
|
@@ -4,13 +4,26 @@ module Capistrano::Fanfare::Campfire
|
|
4
4
|
def self.load_into(configuration)
|
5
5
|
configuration.load do
|
6
6
|
begin
|
7
|
-
require '
|
7
|
+
require 'campy'
|
8
8
|
|
9
9
|
rescue LoadError => error
|
10
|
-
raise "
|
10
|
+
raise "campy gem could not be loaded: (#{error.message}). " +
|
11
11
|
"Please ensure it is in your Gemfile."
|
12
12
|
end
|
13
13
|
|
14
|
+
set(:campfire_yaml_file) do
|
15
|
+
yaml_file = File.expand_path(ENV['CAMPFIRE_YAML_FILE'] || '~/.campfire.yml')
|
16
|
+
|
17
|
+
if !File.exists?(yaml_file)
|
18
|
+
raise "File '#{yaml_file}' does not exist with campfire configuration."
|
19
|
+
end
|
20
|
+
|
21
|
+
yaml_file
|
22
|
+
end
|
23
|
+
|
24
|
+
set(:campfire_options) { YAML.load_file(campfire_yaml_file) }
|
25
|
+
set(:campfire_room) { Campy::Room.new(campfire_options) }
|
26
|
+
|
14
27
|
set(:campfire_pre_msg) do
|
15
28
|
[ ENV['USER'],
|
16
29
|
%{is starting a deploy of},
|
@@ -46,6 +59,11 @@ module Capistrano::Fanfare::Campfire
|
|
46
59
|
set :campfire_success_play, "pushit"
|
47
60
|
set :campfire_fail_play, "trombone"
|
48
61
|
|
62
|
+
# fail fast if campfire options cannot be loaded
|
63
|
+
on :load do
|
64
|
+
fetch(:campfire_options)
|
65
|
+
end
|
66
|
+
|
49
67
|
|
50
68
|
# ========================================================================
|
51
69
|
# These are helper methods that will be available to your recipes.
|
@@ -85,7 +103,7 @@ module Capistrano::Fanfare::Campfire
|
|
85
103
|
desc <<-DESC
|
86
104
|
[internal] Posts a message in Campfire before a deploy has started.
|
87
105
|
DESC
|
88
|
-
task :pre_deploy do
|
106
|
+
task :pre_deploy, :roles => :app, :only => { :primary => true } do
|
89
107
|
@deploy_start_time = Time.now
|
90
108
|
speak fetch(:campfire_pre_msg)
|
91
109
|
end
|
@@ -94,7 +112,7 @@ module Capistrano::Fanfare::Campfire
|
|
94
112
|
[internal] Posts a message and plays a clip after a successful
|
95
113
|
deployment.
|
96
114
|
DESC
|
97
|
-
task :successful_deploy do
|
115
|
+
task :successful_deploy, :roles => :app, :only => { :primary => true } do
|
98
116
|
elapsed = @deploy_start_time ? Time.now - @deploy_start_time : 0
|
99
117
|
|
100
118
|
speak "#{fetch(:campfire_success_msg)} (#{elapsed} seconds)"
|
@@ -105,7 +123,7 @@ module Capistrano::Fanfare::Campfire
|
|
105
123
|
[internal] Posts a message and plays a clip after a failed
|
106
124
|
deployment.
|
107
125
|
DESC
|
108
|
-
task :rollback_deploy do
|
126
|
+
task :rollback_deploy, :roles => :app, :only => { :primary => true } do
|
109
127
|
speak fetch(:campfire_fail_msg)
|
110
128
|
play fetch(:campfire_fail_play)
|
111
129
|
end
|
@@ -113,14 +131,14 @@ module Capistrano::Fanfare::Campfire
|
|
113
131
|
desc <<-DESC
|
114
132
|
[internal] Posts a message in Campfire when the app is being brought down.
|
115
133
|
DESC
|
116
|
-
task :web_disable do
|
134
|
+
task :web_disable, :roles => :app, :only => { :primary => true } do
|
117
135
|
speak fetch(:campfire_web_disable_msg)
|
118
136
|
end
|
119
137
|
|
120
138
|
desc <<-DESC
|
121
139
|
[internal] Posts a message in Campfire when the app is being brought up.
|
122
140
|
DESC
|
123
|
-
task :web_enable do
|
141
|
+
task :web_enable, :roles => :app, :only => { :primary => true } do
|
124
142
|
speak fetch(:campfire_web_enable_msg)
|
125
143
|
end
|
126
144
|
end
|
data/spec/campfire_spec.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'minitest/autorun'
|
2
2
|
require 'minitest/capistrano'
|
3
|
+
require 'mocha'
|
3
4
|
require 'capistrano/fanfare'
|
4
5
|
require 'capistrano/fanfare/campfire'
|
5
6
|
|
@@ -27,6 +28,9 @@ describe Capistrano::Fanfare::Campfire do
|
|
27
28
|
ENV['USER'] = 'filbert'
|
28
29
|
ENV['_SPEC_REASON'] = ENV['REASON']
|
29
30
|
ENV['REASON'] = "to deal with the tribbles"
|
31
|
+
ENV['_SPEC_CAMPFIRE_YAML_FILE'] = ENV['CAMPFIRE_YAML_FILE']
|
32
|
+
ENV['CAMPFIRE_YAML_FILE'] = File.join(
|
33
|
+
File.dirname(__FILE__), %w{fixtures campfire campfire.yml})
|
30
34
|
|
31
35
|
@config.load do
|
32
36
|
def puts(msg)
|
@@ -45,9 +49,43 @@ describe Capistrano::Fanfare::Campfire do
|
|
45
49
|
after do
|
46
50
|
ENV['USER'] = ENV.delete('_SPEC_USER')
|
47
51
|
ENV['REASON'] = ENV.delete('_SPEC_REASON')
|
52
|
+
ENV['CAMPFIRE_YAML_FILE'] = ENV.delete('_CAMPFIRE_YAML_FILE')
|
48
53
|
end
|
49
54
|
|
50
55
|
describe "for variables" do
|
56
|
+
it "sets :campfire_yaml_file to the value from ENV['CAMPFIRE_YAML_FILE']" do
|
57
|
+
@config.fetch(:campfire_yaml_file).must_equal(File.expand_path(
|
58
|
+
File.join(File.dirname(__FILE__), %w{fixtures campfire campfire.yml})))
|
59
|
+
end
|
60
|
+
|
61
|
+
it "sets :campfire_yaml_file to ~/.campfire.yaml if no ENV var is set" do
|
62
|
+
ENV.delete('CAMPFIRE_YAML_FILE')
|
63
|
+
File.stubs(:exists?).with(File.expand_path('~/.campfire.yml')).returns(true)
|
64
|
+
|
65
|
+
@config.fetch(:campfire_yaml_file).must_equal(
|
66
|
+
File.expand_path('~/.campfire.yml'))
|
67
|
+
end
|
68
|
+
|
69
|
+
it "raises an exception if :campfire_yaml_file file does not exist" do
|
70
|
+
ENV['CAMPFIRE_YAML_FILE'] = "/path/to/nowhere"
|
71
|
+
|
72
|
+
proc { @config.trigger(:load) }.must_raise RuntimeError
|
73
|
+
end
|
74
|
+
|
75
|
+
it "loads the campfire configuration into the :campfire_options hash" do
|
76
|
+
@config.fetch(:campfire_options)[:account].must_equal("fitznuggets")
|
77
|
+
@config.fetch(:campfire_options)[:token].must_equal("abcdefg")
|
78
|
+
@config.fetch(:campfire_options)[:room].must_equal("nuggettalk")
|
79
|
+
@config.fetch(:campfire_options)[:ssl].must_equal(true)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "sets :campfire_room to a campfire room object" do
|
83
|
+
Campy::Room.expects(:new).with(:account => "fitznuggets",
|
84
|
+
:room => "nuggettalk", :token => "abcdefg", :ssl => true)
|
85
|
+
|
86
|
+
@config.fetch(:campfire_room)
|
87
|
+
end
|
88
|
+
|
51
89
|
it "sets :campfire_pre_msg to a known default" do
|
52
90
|
@config.set :application, 'wazup'
|
53
91
|
@config.set :deploy_env, 'staging'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-fanfare
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.20
|
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: 2012-
|
12
|
+
date: 2012-04-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
16
|
-
requirement: &
|
16
|
+
requirement: &70295965787460 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.11.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70295965787460
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: capistrano_colors
|
27
|
-
requirement: &
|
27
|
+
requirement: &70295965786840 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0.5'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70295965786840
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: sushi
|
38
|
-
requirement: &
|
38
|
+
requirement: &70295965786340 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,21 +43,32 @@ dependencies:
|
|
43
43
|
version: 0.0.2
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70295965786340
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: multi_json
|
49
|
+
requirement: &70295965785820 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70295965785820
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: minitest
|
49
|
-
requirement: &
|
60
|
+
requirement: &70295965785320 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ~>
|
53
64
|
- !ruby/object:Gem::Version
|
54
|
-
version: 2.
|
65
|
+
version: 2.12.0
|
55
66
|
type: :development
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *70295965785320
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: minitest-capistrano
|
60
|
-
requirement: &
|
71
|
+
requirement: &70295965784760 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ~>
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: '0.0'
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *70295965784760
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: timecop
|
71
|
-
requirement: &
|
82
|
+
requirement: &70295965784240 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ~>
|
@@ -76,7 +87,18 @@ dependencies:
|
|
76
87
|
version: '0.3'
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70295965784240
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: mocha
|
93
|
+
requirement: &70295965783700 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 0.10.5
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70295965783700
|
80
102
|
description: Capistrano recipes (with full test suite) for fanfare application deployment
|
81
103
|
framework
|
82
104
|
email:
|
@@ -88,6 +110,7 @@ files:
|
|
88
110
|
- .gitignore
|
89
111
|
- .travis.yml
|
90
112
|
- Gemfile
|
113
|
+
- Guardfile
|
91
114
|
- LICENSE
|
92
115
|
- README.md
|
93
116
|
- Rakefile
|
@@ -122,6 +145,7 @@ files:
|
|
122
145
|
- spec/db_seed_spec.rb
|
123
146
|
- spec/defaults_spec.rb
|
124
147
|
- spec/fixtures/Procfile
|
148
|
+
- spec/fixtures/campfire/campfire.yml
|
125
149
|
- spec/fixtures/fanfare/bark.rb
|
126
150
|
- spec/fixtures/fanfare/meow.rb
|
127
151
|
- spec/foreman/strategy/runit_spec.rb
|
@@ -146,7 +170,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
146
170
|
version: '0'
|
147
171
|
segments:
|
148
172
|
- 0
|
149
|
-
hash:
|
173
|
+
hash: -4225580647102189230
|
150
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
175
|
none: false
|
152
176
|
requirements:
|
@@ -155,10 +179,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
179
|
version: '0'
|
156
180
|
segments:
|
157
181
|
- 0
|
158
|
-
hash:
|
182
|
+
hash: -4225580647102189230
|
159
183
|
requirements: []
|
160
184
|
rubyforge_project:
|
161
|
-
rubygems_version: 1.8.
|
185
|
+
rubygems_version: 1.8.17
|
162
186
|
signing_key:
|
163
187
|
specification_version: 3
|
164
188
|
summary: Capistrano recipes (with full test suite) for fanfare application deployment
|
@@ -174,6 +198,7 @@ test_files:
|
|
174
198
|
- spec/db_seed_spec.rb
|
175
199
|
- spec/defaults_spec.rb
|
176
200
|
- spec/fixtures/Procfile
|
201
|
+
- spec/fixtures/campfire/campfire.yml
|
177
202
|
- spec/fixtures/fanfare/bark.rb
|
178
203
|
- spec/fixtures/fanfare/meow.rb
|
179
204
|
- spec/foreman/strategy/runit_spec.rb
|