kumade 0.8.1 → 0.8.2

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.
@@ -1,3 +1,8 @@
1
+ ## 0.8.2 (2011-11-09)
2
+ * Add kumade:pre\_deploy Rake task hook
3
+
4
+ * Git#push when remote does not exist returns silently
5
+
1
6
  ## 0.8.1 (2011-11-08)
2
7
  * Correctly restart apps
3
8
 
@@ -0,0 +1,21 @@
1
+ @slow
2
+ Feature: Rake task that always runs during pre deploy
3
+ As a user
4
+ I want a Rake task that runs before deployment
5
+ So that I can hook into the deployment process
6
+
7
+ Scenario: Pre-deploy task runs during deployment
8
+ Given a new Rails application with Kumade and Jammit
9
+ When I create a Heroku remote named "pretend-staging"
10
+ And I add a pre-deploy rake task that prints "Hi!"
11
+ And I run kumade with "pretend-staging"
12
+ Then the output should contain "kumade:pre_deploy"
13
+ And the output should contain "Hi!"
14
+
15
+ Scenario: Pre-deploy task does not run when pretending
16
+ Given a new Rails application with Kumade and Jammit
17
+ When I create a Heroku remote named "pretend-staging"
18
+ And I add a pre-deploy rake task that prints "Hi!"
19
+ And I run kumade with "pretend-staging -p"
20
+ Then the output should contain "kumade:pre_deploy"
21
+ But the output should not contain "Hi!"
@@ -36,3 +36,15 @@ When /^I add a pre-compilation rake task that prints "Hi!"$/ do
36
36
 
37
37
  commit_everything_in_repo
38
38
  end
39
+
40
+ When /^I add a pre-deploy rake task that prints "Hi!"$/ do
41
+ append_to_file("Rakefile", <<-CUSTOM_TASK)
42
+ namespace :kumade do
43
+ task :pre_deploy do
44
+ puts 'Hi!'
45
+ end
46
+ end
47
+ CUSTOM_TASK
48
+
49
+ commit_everything_in_repo
50
+ end
@@ -28,6 +28,7 @@ module Kumade
28
28
 
29
29
  def pre_deploy
30
30
  ensure_clean_git
31
+ run_predeploy_task
31
32
  package_assets
32
33
  sync_origin
33
34
  end
@@ -59,5 +60,11 @@ module Kumade
59
60
  Kumade.configuration.outputter.error(%{Cannot deploy: "#{Kumade.configuration.environment}" remote does not exist})
60
61
  end
61
62
  end
63
+
64
+ private
65
+
66
+ def run_predeploy_task
67
+ RakeTaskRunner.new("kumade:pre_deploy").invoke
68
+ end
62
69
  end
63
70
  end
@@ -11,6 +11,7 @@ module Kumade
11
11
  end
12
12
 
13
13
  def push(branch, remote = 'origin', force = false)
14
+ return unless remote_exists?(remote)
14
15
  command = ["git push"]
15
16
  command << "-f" if force
16
17
  command << remote
@@ -1,3 +1,3 @@
1
1
  module Kumade
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.2"
3
3
  end
@@ -1,7 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Kumade::Deployer, "#pre_deploy", :with_mock_outputter do
4
- let(:git) { subject.git }
4
+ let(:git) { subject.git }
5
+ let(:rake_task_runner) { stub("RakeTaskRunner", :invoke => true) }
6
+ let(:packager) { stub("packager", :run => true) }
7
+
8
+ before do
9
+ Kumade::Packager.stubs(:new => packager)
10
+ Kumade::RakeTaskRunner.stubs(:new).with("kumade:pre_deploy").returns(rake_task_runner)
11
+ end
5
12
 
6
13
  it "calls the correct methods" do
7
14
  git.expects(:ensure_clean_git)
@@ -10,6 +17,13 @@ describe Kumade::Deployer, "#pre_deploy", :with_mock_outputter do
10
17
 
11
18
  subject.pre_deploy
12
19
  end
20
+
21
+ it "invokes the kumade:pre_deploy task" do
22
+ subject.pre_deploy
23
+
24
+ Kumade::RakeTaskRunner.should have_received(:new).with("kumade:pre_deploy")
25
+ rake_task_runner.should have_received(:invoke)
26
+ end
13
27
  end
14
28
 
15
29
  describe Kumade::Deployer, "#deploy", :with_mock_outputter do
@@ -43,27 +43,42 @@ end
43
43
  describe Kumade::Git, "#push", :with_mock_outputter do
44
44
  let(:branch) { 'branch' }
45
45
  let(:remote) { 'my-remote' }
46
- let(:command_line) { stub("Kumade::CommandLine instance", :run_or_error => true) }
47
46
 
48
- before do
49
- Kumade::CommandLine.stubs(:new => command_line)
50
- end
47
+ context "when the remote exists" do
48
+ let(:command_line) { stub("Kumade::CommandLine instance", :run_or_error => true) }
51
49
 
52
- it "pushes to the correct remote" do
53
- subject.push(branch, remote)
54
- Kumade::CommandLine.should have_received(:new).with("git push #{remote} #{branch}")
55
- command_line.should have_received(:run_or_error).once
56
- end
50
+ before do
51
+ Kumade::CommandLine.stubs(:new => command_line)
52
+ subject.stubs(:remote_exists? => true)
53
+ end
54
+
55
+ it "pushes to the correct remote" do
56
+ subject.push(branch, remote)
57
+ Kumade::CommandLine.should have_received(:new).with("git push #{remote} #{branch}")
58
+ command_line.should have_received(:run_or_error).once
59
+ end
57
60
 
58
- it "can force push" do
59
- subject.push(branch, remote, true)
60
- Kumade::CommandLine.should have_received(:new).with("git push -f #{remote} #{branch}")
61
- command_line.should have_received(:run_or_error).once
61
+ it "can force push" do
62
+ subject.push(branch, remote, true)
63
+ Kumade::CommandLine.should have_received(:new).with("git push -f #{remote} #{branch}")
64
+ command_line.should have_received(:run_or_error).once
65
+ end
66
+
67
+ it "prints a success message" do
68
+ subject.push(branch, remote)
69
+ Kumade.configuration.outputter.should have_received(:success).with("Pushed #{branch} -> #{remote}")
70
+ end
62
71
  end
63
72
 
64
- it "prints a success message" do
65
- subject.push(branch, remote)
66
- Kumade.configuration.outputter.should have_received(:success).with("Pushed #{branch} -> #{remote}")
73
+ context "when the remote does not exist" do
74
+ before do
75
+ subject.stubs(:remote_exists? => false)
76
+ end
77
+
78
+ it "returns silently" do
79
+ subject.push(branch)
80
+ Kumade::CommandLine.should have_received(:new).never
81
+ end
67
82
  end
68
83
  end
69
84
 
metadata CHANGED
@@ -1,136 +1,140 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: kumade
3
- version: !ruby/object:Gem::Version
4
- version: 0.8.1
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 0.8.2
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Gabe Berke-Williams
9
9
  - thoughtbot
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-11-08 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
13
+
14
+ date: 2012-01-09 00:00:00 -05:00
15
+ default_executable:
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
16
18
  name: heroku
17
- requirement: &70189854580280 !ruby/object:Gem::Requirement
19
+ prerelease: false
20
+ requirement: &id001 !ruby/object:Gem::Requirement
18
21
  none: false
19
- requirements:
22
+ requirements:
20
23
  - - ~>
21
- - !ruby/object:Gem::Version
22
- version: '2.0'
24
+ - !ruby/object:Gem::Version
25
+ version: "2.0"
23
26
  type: :runtime
24
- prerelease: false
25
- version_requirements: *70189854580280
26
- - !ruby/object:Gem::Dependency
27
+ version_requirements: *id001
28
+ - !ruby/object:Gem::Dependency
27
29
  name: rake
28
- requirement: &70189854579780 !ruby/object:Gem::Requirement
30
+ prerelease: false
31
+ requirement: &id002 !ruby/object:Gem::Requirement
29
32
  none: false
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
33
36
  version: 0.8.7
34
37
  type: :runtime
35
- prerelease: false
36
- version_requirements: *70189854579780
37
- - !ruby/object:Gem::Dependency
38
+ version_requirements: *id002
39
+ - !ruby/object:Gem::Dependency
38
40
  name: cocaine
39
- requirement: &70189854587160 !ruby/object:Gem::Requirement
41
+ prerelease: false
42
+ requirement: &id003 !ruby/object:Gem::Requirement
40
43
  none: false
41
- requirements:
42
- - - ! '>='
43
- - !ruby/object:Gem::Version
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
44
47
  version: 0.2.0
45
48
  type: :runtime
46
- prerelease: false
47
- version_requirements: *70189854587160
48
- - !ruby/object:Gem::Dependency
49
+ version_requirements: *id003
50
+ - !ruby/object:Gem::Dependency
49
51
  name: rails
50
- requirement: &70189854586660 !ruby/object:Gem::Requirement
52
+ prerelease: false
53
+ requirement: &id004 !ruby/object:Gem::Requirement
51
54
  none: false
52
- requirements:
53
- - - ! '>='
54
- - !ruby/object:Gem::Version
55
- version: '2'
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: "2"
56
59
  type: :runtime
57
- prerelease: false
58
- version_requirements: *70189854586660
59
- - !ruby/object:Gem::Dependency
60
+ version_requirements: *id004
61
+ - !ruby/object:Gem::Dependency
60
62
  name: rspec
61
- requirement: &70189854585900 !ruby/object:Gem::Requirement
63
+ prerelease: false
64
+ requirement: &id005 !ruby/object:Gem::Requirement
62
65
  none: false
63
- requirements:
66
+ requirements:
64
67
  - - ~>
65
- - !ruby/object:Gem::Version
68
+ - !ruby/object:Gem::Version
66
69
  version: 2.6.0
67
70
  type: :development
68
- prerelease: false
69
- version_requirements: *70189854585900
70
- - !ruby/object:Gem::Dependency
71
+ version_requirements: *id005
72
+ - !ruby/object:Gem::Dependency
71
73
  name: cucumber
72
- requirement: &70189854585180 !ruby/object:Gem::Requirement
74
+ prerelease: false
75
+ requirement: &id006 !ruby/object:Gem::Requirement
73
76
  none: false
74
- requirements:
77
+ requirements:
75
78
  - - ~>
76
- - !ruby/object:Gem::Version
79
+ - !ruby/object:Gem::Version
77
80
  version: 1.0.2
78
81
  type: :development
79
- prerelease: false
80
- version_requirements: *70189854585180
81
- - !ruby/object:Gem::Dependency
82
+ version_requirements: *id006
83
+ - !ruby/object:Gem::Dependency
82
84
  name: aruba
83
- requirement: &70189854584680 !ruby/object:Gem::Requirement
85
+ prerelease: false
86
+ requirement: &id007 !ruby/object:Gem::Requirement
84
87
  none: false
85
- requirements:
88
+ requirements:
86
89
  - - ~>
87
- - !ruby/object:Gem::Version
90
+ - !ruby/object:Gem::Version
88
91
  version: 0.4.3
89
92
  type: :development
90
- prerelease: false
91
- version_requirements: *70189854584680
92
- - !ruby/object:Gem::Dependency
93
+ version_requirements: *id007
94
+ - !ruby/object:Gem::Dependency
93
95
  name: jammit
94
- requirement: &70189854584080 !ruby/object:Gem::Requirement
96
+ prerelease: false
97
+ requirement: &id008 !ruby/object:Gem::Requirement
95
98
  none: false
96
- requirements:
99
+ requirements:
97
100
  - - ~>
98
- - !ruby/object:Gem::Version
101
+ - !ruby/object:Gem::Version
99
102
  version: 0.6.3
100
103
  type: :development
101
- prerelease: false
102
- version_requirements: *70189854584080
103
- - !ruby/object:Gem::Dependency
104
+ version_requirements: *id008
105
+ - !ruby/object:Gem::Dependency
104
106
  name: bourne
105
- requirement: &70189854583560 !ruby/object:Gem::Requirement
107
+ prerelease: false
108
+ requirement: &id009 !ruby/object:Gem::Requirement
106
109
  none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: "0"
111
114
  type: :development
112
- prerelease: false
113
- version_requirements: *70189854583560
114
- - !ruby/object:Gem::Dependency
115
+ version_requirements: *id009
116
+ - !ruby/object:Gem::Dependency
115
117
  name: simplecov
116
- requirement: &70189854580720 !ruby/object:Gem::Requirement
118
+ prerelease: false
119
+ requirement: &id010 !ruby/object:Gem::Requirement
117
120
  none: false
118
- requirements:
119
- - - ! '>='
120
- - !ruby/object:Gem::Version
121
- version: '0'
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: "0"
122
125
  type: :development
123
- prerelease: false
124
- version_requirements: *70189854580720
126
+ version_requirements: *id010
125
127
  description: A well-tested script for easy deploying to Heroku
126
- email:
128
+ email:
127
129
  - gabe@thoughtbot.com
128
130
  - support@thoughtbot.com
129
- executables:
131
+ executables:
130
132
  - kumade
131
133
  extensions: []
134
+
132
135
  extra_rdoc_files: []
133
- files:
136
+
137
+ files:
134
138
  - .gitignore
135
139
  - .simplecov
136
140
  - .travis.yml
@@ -147,6 +151,7 @@ files:
147
151
  - features/no_op_packager.feature
148
152
  - features/railtie.feature
149
153
  - features/rake_task_before_asset_compilation.feature
154
+ - features/rake_task_pre_deploy.feature
150
155
  - features/step_definitions/bundler_steps.rb
151
156
  - features/step_definitions/git_steps.rb
152
157
  - features/step_definitions/jammit_steps.rb
@@ -198,31 +203,35 @@ files:
198
203
  - spec/support/git.rb
199
204
  - spec/support/heroku.rb
200
205
  - spec/support/shared_examples/packager.rb
206
+ has_rdoc: true
201
207
  homepage: http://thoughtbot.com/community/
202
208
  licenses: []
209
+
203
210
  post_install_message:
204
211
  rdoc_options: []
205
- require_paths:
212
+
213
+ require_paths:
206
214
  - lib
207
- required_ruby_version: !ruby/object:Gem::Requirement
215
+ required_ruby_version: !ruby/object:Gem::Requirement
208
216
  none: false
209
- requirements:
210
- - - ! '>='
211
- - !ruby/object:Gem::Version
212
- version: '0'
213
- required_rubygems_version: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: "0"
221
+ required_rubygems_version: !ruby/object:Gem::Requirement
214
222
  none: false
215
- requirements:
216
- - - ! '>='
217
- - !ruby/object:Gem::Version
218
- version: '0'
223
+ requirements:
224
+ - - ">="
225
+ - !ruby/object:Gem::Version
226
+ version: "0"
219
227
  requirements: []
228
+
220
229
  rubyforge_project:
221
- rubygems_version: 1.8.10
230
+ rubygems_version: 1.6.2
222
231
  signing_key:
223
232
  specification_version: 3
224
233
  summary: A well-tested script for easy deploying to Heroku
225
- test_files:
234
+ test_files:
226
235
  - features/git.feature
227
236
  - features/jammit.feature
228
237
  - features/kumade_executable.feature
@@ -230,6 +239,7 @@ test_files:
230
239
  - features/no_op_packager.feature
231
240
  - features/railtie.feature
232
241
  - features/rake_task_before_asset_compilation.feature
242
+ - features/rake_task_pre_deploy.feature
233
243
  - features/step_definitions/bundler_steps.rb
234
244
  - features/step_definitions/git_steps.rb
235
245
  - features/step_definitions/jammit_steps.rb