capistrano-fanfare 0.0.19 → 0.0.20

Sign up to get free protection for your applications and to get access to all the features.
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