kumade 0.0.2 → 0.0.3
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/.travis.yml +7 -0
- data/README.md +105 -46
- data/bin/kumade +5 -0
- data/features/kumade_executable.feature +35 -0
- data/features/step_definitions/dependency_steps.rb +3 -0
- data/features/step_definitions/git_steps.rb +9 -0
- data/features/support/env.rb +0 -3
- data/kumade.gemspec +1 -0
- data/lib/kumade.rb +10 -41
- data/lib/kumade/deployer.rb +107 -62
- data/lib/kumade/thor_task.rb +18 -0
- data/lib/kumade/version.rb +2 -2
- data/spec/kumade/deployer_spec.rb +586 -0
- data/spec/kumade/thor_task_spec.rb +14 -0
- data/spec/kumade_spec.rb +16 -64
- data/spec/spec_helper.rb +13 -0
- metadata +84 -123
- data/features/deploying.feature +0 -23
- data/features/loading_tasks.feature +0 -36
- data/features/namespaced_deploy.feature +0 -23
- data/features/step_definitions/stub_steps.rb +0 -10
- data/features/step_definitions/task_steps.rb +0 -27
- data/features/support/insert_into_rakefile.rb +0 -15
- data/features/support/require_kumade.rb +0 -18
- data/lib/kumade/tasks/deploy.rake +0 -12
- data/lib/kumade/tasks/namespaced_deploy.rake +0 -18
- data/spec/deployer_spec.rb +0 -564
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Kumade
|
4
|
+
describe ThorTask, "deploy" do
|
5
|
+
before { subject.stub(:say) }
|
6
|
+
|
7
|
+
let(:environment){ 'bamboo' }
|
8
|
+
|
9
|
+
it "calls the deploy method with the correct environment" do
|
10
|
+
Deployer.any_instance.should_receive(:deploy_to).with(environment)
|
11
|
+
subject.deploy(environment)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/spec/kumade_spec.rb
CHANGED
@@ -1,77 +1,29 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Kumade, ".
|
4
|
-
let(:
|
5
|
-
let(:
|
3
|
+
describe Kumade, ".app_for" do
|
4
|
+
let(:environment){ 'staging' }
|
5
|
+
let(:app_name){ 'staging_test' }
|
6
|
+
let(:not_a_heroku_env){ 'fake_heroku' }
|
7
|
+
let(:not_a_heroku_url){ 'git@github.com:gabebw/kumade.git' }
|
6
8
|
|
7
9
|
before do
|
8
|
-
|
9
|
-
`git remote add #{
|
10
|
+
force_add_heroku_remote(environment, app_name)
|
11
|
+
`git remote add #{not_a_heroku_env} #{not_a_heroku_url}`
|
10
12
|
end
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
it "can be set" do
|
15
|
-
Kumade.staging_remote = 'orange'
|
16
|
-
Kumade.staging_remote.should == 'orange'
|
17
|
-
end
|
18
|
-
|
19
|
-
it "is autodetected if staging app is set" do
|
20
|
-
Kumade.staging_app = staging_app
|
21
|
-
Kumade.staging_remote.should == staging_remote
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe Kumade, "staging app" do
|
26
|
-
before { Kumade.reset! }
|
27
|
-
|
28
|
-
it "defaults to nil" do
|
29
|
-
Kumade.staging_app.should be_nil
|
13
|
+
after do
|
14
|
+
remove_remote(environment)
|
15
|
+
remove_remote(not_a_heroku_env)
|
30
16
|
end
|
31
17
|
|
32
|
-
it "
|
33
|
-
Kumade.
|
34
|
-
Kumade.staging_app.should == 'orange'
|
18
|
+
it "autodetects the Heroku app name" do
|
19
|
+
Kumade.app_for(environment).should == app_name
|
35
20
|
end
|
36
|
-
end
|
37
21
|
|
38
|
-
|
39
|
-
|
40
|
-
let(:production_remote){ 'production_test' }
|
41
|
-
|
42
|
-
before do
|
43
|
-
Kumade.reset!
|
44
|
-
`git remote add #{production_remote} git@heroku.com:#{production_app}.git`
|
22
|
+
it "returns an empty string if the app cannot be found" do
|
23
|
+
Kumade.app_for('xyz').should == ""
|
45
24
|
end
|
46
25
|
|
47
|
-
|
48
|
-
|
49
|
-
it "can be set" do
|
50
|
-
Kumade.production_remote = 'orange'
|
51
|
-
Kumade.production_remote.should == 'orange'
|
52
|
-
end
|
53
|
-
|
54
|
-
it "is autodetected if production app is set" do
|
55
|
-
Kumade.production_app = production_app
|
56
|
-
Kumade.production_remote.should == production_remote
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe Kumade, "production app" do
|
61
|
-
before { Kumade.reset! }
|
62
|
-
|
63
|
-
it "defaults to nil" do
|
64
|
-
Kumade.production_app.should be_nil
|
65
|
-
end
|
66
|
-
|
67
|
-
it "can be set" do
|
68
|
-
Kumade.production_app = 'orange'
|
69
|
-
Kumade.production_app.should == 'orange'
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
describe Kumade, "heroku_remote_url_for_app" do
|
74
|
-
it "returns the Heroku remote_url for an app" do
|
75
|
-
Kumade.heroku_remote_url_for_app('blerg').should == 'git@heroku.com:blerg.git'
|
26
|
+
it "returns an empty string if the remote is not a Heroku remote" do
|
27
|
+
Kumade.app_for(not_a_heroku_env).should == ""
|
76
28
|
end
|
77
29
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -6,3 +6,16 @@ include RSpec::Mocks::Methods
|
|
6
6
|
|
7
7
|
RSpec.configure do |spec|
|
8
8
|
end
|
9
|
+
|
10
|
+
module GitRemoteHelpers
|
11
|
+
def force_add_heroku_remote(remote_name, app_name)
|
12
|
+
remove_remote(remote_name)
|
13
|
+
`git remote add #{remote_name} git@heroku.com:#{app_name}.git`
|
14
|
+
end
|
15
|
+
|
16
|
+
def remove_remote(remote_name)
|
17
|
+
`git remote rm #{remote_name} 2>/dev/null`
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
include GitRemoteHelpers
|
metadata
CHANGED
@@ -1,191 +1,152 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: kumade
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 2
|
10
|
-
version: 0.0.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Gabe Berke-Williams
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2011-07-26 00:00:00 -04:00
|
12
|
+
date: 2011-07-29 00:00:00.000000000 -04:00
|
19
13
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
22
16
|
name: heroku
|
17
|
+
requirement: &2153409400 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
23
24
|
prerelease: false
|
24
|
-
|
25
|
+
version_requirements: *2153409400
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: thor
|
28
|
+
requirement: &2153408900 !ruby/object:Gem::Requirement
|
25
29
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.14'
|
33
34
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: rake
|
37
35
|
prerelease: false
|
38
|
-
|
36
|
+
version_requirements: *2153408900
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rake
|
39
|
+
requirement: &2153408400 !ruby/object:Gem::Requirement
|
39
40
|
none: false
|
40
|
-
requirements:
|
41
|
+
requirements:
|
41
42
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
hash: 49
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
- 8
|
47
|
-
- 7
|
43
|
+
- !ruby/object:Gem::Version
|
48
44
|
version: 0.8.7
|
49
45
|
type: :development
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: rspec
|
53
46
|
prerelease: false
|
54
|
-
|
47
|
+
version_requirements: *2153408400
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rspec
|
50
|
+
requirement: &2153407940 !ruby/object:Gem::Requirement
|
55
51
|
none: false
|
56
|
-
requirements:
|
52
|
+
requirements:
|
57
53
|
- - ~>
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
hash: 23
|
60
|
-
segments:
|
61
|
-
- 2
|
62
|
-
- 6
|
63
|
-
- 0
|
54
|
+
- !ruby/object:Gem::Version
|
64
55
|
version: 2.6.0
|
65
56
|
type: :development
|
66
|
-
version_requirements: *id003
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
name: cucumber
|
69
57
|
prerelease: false
|
70
|
-
|
58
|
+
version_requirements: *2153407940
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: cucumber
|
61
|
+
requirement: &2153407480 !ruby/object:Gem::Requirement
|
71
62
|
none: false
|
72
|
-
requirements:
|
63
|
+
requirements:
|
73
64
|
- - ~>
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
hash: 19
|
76
|
-
segments:
|
77
|
-
- 1
|
78
|
-
- 0
|
79
|
-
- 2
|
65
|
+
- !ruby/object:Gem::Version
|
80
66
|
version: 1.0.2
|
81
67
|
type: :development
|
82
|
-
version_requirements: *id004
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: aruba
|
85
68
|
prerelease: false
|
86
|
-
|
69
|
+
version_requirements: *2153407480
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: aruba
|
72
|
+
requirement: &2153407020 !ruby/object:Gem::Requirement
|
87
73
|
none: false
|
88
|
-
requirements:
|
74
|
+
requirements:
|
89
75
|
- - ~>
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
hash: 9
|
92
|
-
segments:
|
93
|
-
- 0
|
94
|
-
- 4
|
95
|
-
- 3
|
76
|
+
- !ruby/object:Gem::Version
|
96
77
|
version: 0.4.3
|
97
78
|
type: :development
|
98
|
-
version_requirements: *id005
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
|
-
name: jammit
|
101
79
|
prerelease: false
|
102
|
-
|
80
|
+
version_requirements: *2153407020
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: jammit
|
83
|
+
requirement: &2153406560 !ruby/object:Gem::Requirement
|
103
84
|
none: false
|
104
|
-
requirements:
|
85
|
+
requirements:
|
105
86
|
- - ~>
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
hash: 1
|
108
|
-
segments:
|
109
|
-
- 0
|
110
|
-
- 6
|
111
|
-
- 3
|
87
|
+
- !ruby/object:Gem::Version
|
112
88
|
version: 0.6.3
|
113
89
|
type: :development
|
114
|
-
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: *2153406560
|
115
92
|
description: Simple rake tasks for deploying to Heroku
|
116
|
-
email:
|
93
|
+
email:
|
117
94
|
- gabe@thoughtbot.com
|
118
|
-
executables:
|
119
|
-
|
95
|
+
executables:
|
96
|
+
- kumade
|
120
97
|
extensions: []
|
121
|
-
|
122
98
|
extra_rdoc_files: []
|
123
|
-
|
124
|
-
files:
|
99
|
+
files:
|
125
100
|
- .gitignore
|
101
|
+
- .travis.yml
|
126
102
|
- Gemfile
|
127
103
|
- README.md
|
128
104
|
- Rakefile
|
129
|
-
-
|
130
|
-
- features/
|
131
|
-
- features/
|
132
|
-
- features/step_definitions/
|
133
|
-
- features/step_definitions/task_steps.rb
|
105
|
+
- bin/kumade
|
106
|
+
- features/kumade_executable.feature
|
107
|
+
- features/step_definitions/dependency_steps.rb
|
108
|
+
- features/step_definitions/git_steps.rb
|
134
109
|
- features/support/env.rb
|
135
|
-
- features/support/insert_into_rakefile.rb
|
136
|
-
- features/support/require_kumade.rb
|
137
110
|
- kumade.gemspec
|
138
111
|
- lib/kumade.rb
|
139
112
|
- lib/kumade/deployer.rb
|
140
|
-
- lib/kumade/
|
141
|
-
- lib/kumade/tasks/namespaced_deploy.rake
|
113
|
+
- lib/kumade/thor_task.rb
|
142
114
|
- lib/kumade/version.rb
|
143
|
-
- spec/deployer_spec.rb
|
115
|
+
- spec/kumade/deployer_spec.rb
|
116
|
+
- spec/kumade/thor_task_spec.rb
|
144
117
|
- spec/kumade_spec.rb
|
145
118
|
- spec/spec_helper.rb
|
146
119
|
has_rdoc: true
|
147
|
-
homepage:
|
120
|
+
homepage: ''
|
148
121
|
licenses: []
|
149
|
-
|
150
122
|
post_install_message:
|
151
123
|
rdoc_options: []
|
152
|
-
|
153
|
-
require_paths:
|
124
|
+
require_paths:
|
154
125
|
- lib
|
155
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
156
127
|
none: false
|
157
|
-
requirements:
|
158
|
-
- -
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
|
161
|
-
|
162
|
-
- 0
|
163
|
-
version: "0"
|
164
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
133
|
none: false
|
166
|
-
requirements:
|
167
|
-
- -
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
|
170
|
-
segments:
|
171
|
-
- 0
|
172
|
-
version: "0"
|
134
|
+
requirements:
|
135
|
+
- - ! '>='
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
173
138
|
requirements: []
|
174
|
-
|
175
139
|
rubyforge_project:
|
176
140
|
rubygems_version: 1.6.2
|
177
141
|
signing_key:
|
178
142
|
specification_version: 3
|
179
143
|
summary: Simple rake tasks for deploying to Heroku
|
180
|
-
test_files:
|
181
|
-
- features/
|
182
|
-
- features/
|
183
|
-
- features/
|
184
|
-
- features/step_definitions/stub_steps.rb
|
185
|
-
- features/step_definitions/task_steps.rb
|
144
|
+
test_files:
|
145
|
+
- features/kumade_executable.feature
|
146
|
+
- features/step_definitions/dependency_steps.rb
|
147
|
+
- features/step_definitions/git_steps.rb
|
186
148
|
- features/support/env.rb
|
187
|
-
-
|
188
|
-
-
|
189
|
-
- spec/deployer_spec.rb
|
149
|
+
- spec/kumade/deployer_spec.rb
|
150
|
+
- spec/kumade/thor_task_spec.rb
|
190
151
|
- spec/kumade_spec.rb
|
191
152
|
- spec/spec_helper.rb
|
data/features/deploying.feature
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
Feature: Deploying to Heroku
|
2
|
-
In order to easily use Heroku's services
|
3
|
-
As a user
|
4
|
-
I want to deploy to Heroku
|
5
|
-
|
6
|
-
Background:
|
7
|
-
Given a directory named "deployer"
|
8
|
-
And I cd to "deployer"
|
9
|
-
And I stub out the "staging" deploy method
|
10
|
-
And I stub out the "production" deploy method
|
11
|
-
And I load the non-namespaced tasks
|
12
|
-
|
13
|
-
Scenario: deploy task is an alias for kumade:deploy
|
14
|
-
When I successfully run the rake task "deploy"
|
15
|
-
Then the output should contain "Force pushed master -> staging"
|
16
|
-
|
17
|
-
Scenario: Deploying to staging with deploy:staging
|
18
|
-
When I successfully run the rake task "deploy:staging"
|
19
|
-
Then the output should contain "Force pushed master -> staging"
|
20
|
-
|
21
|
-
Scenario: Deploying to production with deploy:production
|
22
|
-
When I successfully run the rake task "deploy:production"
|
23
|
-
Then the output should contain "Force pushed master -> production"
|
@@ -1,36 +0,0 @@
|
|
1
|
-
Feature: Loading tasks
|
2
|
-
In order to use Kumade
|
3
|
-
As a user
|
4
|
-
I want to load Rake tasks
|
5
|
-
|
6
|
-
Background:
|
7
|
-
Given a directory named "taskloader"
|
8
|
-
When I cd to "taskloader"
|
9
|
-
And I write to "Gemfile" with:
|
10
|
-
"""
|
11
|
-
source "http://rubygems.org"
|
12
|
-
gem "rake", "0.8.7"
|
13
|
-
gem "kumade"
|
14
|
-
"""
|
15
|
-
|
16
|
-
Scenario: Load non-namespaced Rake tasks
|
17
|
-
When I write to "Rakefile" with:
|
18
|
-
"""
|
19
|
-
require 'kumade'
|
20
|
-
Kumade.load_tasks
|
21
|
-
"""
|
22
|
-
And I run `rake -T`
|
23
|
-
Then the output should contain "deploy"
|
24
|
-
And the output should contain "deploy:staging"
|
25
|
-
And the output should contain "deploy:production"
|
26
|
-
|
27
|
-
Scenario: Load namespaced Rake tasks
|
28
|
-
When I write to "Rakefile" with:
|
29
|
-
"""
|
30
|
-
require 'kumade'
|
31
|
-
Kumade.load_namespaced_tasks
|
32
|
-
"""
|
33
|
-
And I run `rake -T`
|
34
|
-
Then the output should contain "kumade:deploy"
|
35
|
-
And the output should contain "kumade:deploy:staging"
|
36
|
-
And the output should contain "kumade:deploy:production"
|