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 CHANGED
@@ -6,8 +6,12 @@ gemspec
6
6
  group :test do
7
7
  gem 'rake', '~> 0.9'
8
8
  gem 'foreman'
9
- gem 'capistrano-campfire'
9
+ gem 'campy'
10
10
  gem 'airbrake'
11
+
12
+ gem 'growl'
13
+ gem 'guard'
14
+ gem 'guard-minitest'
11
15
  end
12
16
 
13
17
  platforms :jruby do
data/Guardfile ADDED
@@ -0,0 +1,4 @@
1
+ guard 'minitest' do
2
+ watch(%r|^spec/(.*)_spec\.rb|)
3
+ watch(%r|^lib/capistrano/fanfare/(.*)([^/]+)\.rb|) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
4
+ end
@@ -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.11.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 'capistrano/campfire'
7
+ require 'campy'
8
8
 
9
9
  rescue LoadError => error
10
- raise "capistrano-campfire gem could not be loaded: (#{error.message}). " +
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
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Fanfare
3
- VERSION = "0.0.19"
3
+ VERSION = "0.0.20"
4
4
  end
5
5
  end
@@ -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'
@@ -0,0 +1,4 @@
1
+ :account: fitznuggets
2
+ :token: abcdefg
3
+ :room: nuggettalk
4
+ :ssl: true
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.19
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-03-08 00:00:00.000000000 Z
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: &70314802799240 !ruby/object:Gem::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: *70314802799240
24
+ version_requirements: *70295965787460
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: capistrano_colors
27
- requirement: &70314802798680 !ruby/object:Gem::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: *70314802798680
35
+ version_requirements: *70295965786840
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sushi
38
- requirement: &70314802798100 !ruby/object:Gem::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: *70314802798100
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: &70314802797500 !ruby/object:Gem::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.11.2
65
+ version: 2.12.0
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70314802797500
68
+ version_requirements: *70295965785320
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: minitest-capistrano
60
- requirement: &70314802797000 !ruby/object:Gem::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: *70314802797000
79
+ version_requirements: *70295965784760
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: timecop
71
- requirement: &70314802796240 !ruby/object:Gem::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: *70314802796240
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: 3042953069069299639
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: 3042953069069299639
182
+ hash: -4225580647102189230
159
183
  requirements: []
160
184
  rubyforge_project:
161
- rubygems_version: 1.8.15
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