kumade 0.3.0 → 0.4.0

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.
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kumade, ".configuration" do
4
+ it "returns a Kumade::Configuration instance" do
5
+ Kumade.configuration.should be_a Kumade::Configuration
6
+ end
7
+
8
+ it "caches the configuration" do
9
+ Kumade.configuration.should eq Kumade.configuration
10
+ end
11
+ end
12
+
13
+ describe Kumade, ".configuration=" do
14
+ it "sets Kumade.configuration" do
15
+ Kumade.configuration = "new-value"
16
+ Kumade.configuration.should == "new-value"
17
+ end
18
+ end
@@ -1,8 +1,12 @@
1
1
  require 'rspec'
2
+ require 'aruba/api'
3
+ require 'bourne'
4
+
2
5
  require 'kumade'
6
+
7
+ # Since we autoload, these aren't require'd when we require kumade.
3
8
  require 'rake'
4
- require 'stringio'
5
- require 'aruba/api'
9
+ require 'cocaine'
6
10
 
7
11
  module GitRemoteHelpers
8
12
  def force_add_heroku_remote(remote_name)
@@ -15,8 +19,16 @@ module GitRemoteHelpers
15
19
  end
16
20
  end
17
21
 
22
+
23
+ spec_dir = Pathname.new(File.expand_path(File.dirname(__FILE__)))
24
+ Dir[spec_dir.join('support', '**')].each {|f| require File.expand_path(f) }
25
+
18
26
  RSpec.configure do |config|
19
- config.include RSpec::Mocks::Methods
27
+ config.mock_with :mocha
28
+ config.color_enabled = true
29
+
30
+ config.include Rake::DSL if defined?(Rake::DSL)
31
+
20
32
  config.include GitRemoteHelpers
21
33
  config.include Aruba::Api
22
34
 
@@ -31,4 +43,8 @@ RSpec.configure do |config|
31
43
  example.run
32
44
  end
33
45
  end
46
+
47
+ config.after do
48
+ Kumade.configuration = Kumade::Configuration.new
49
+ end
34
50
  end
@@ -0,0 +1,33 @@
1
+ shared_context "when on Cedar" do
2
+ let(:command_line) { mock("Cocaine::CommandLine") }
3
+
4
+ before do
5
+ Cocaine::CommandLine.expects(:new).
6
+ with("bundle exec heroku stack --remote staging").
7
+ returns(command_line)
8
+
9
+ command_line.expects(:run).returns(%{
10
+ aspen-mri-1.8.6
11
+ bamboo-mri-1.9.2
12
+ bamboo-ree-1.8.7
13
+ * cedar (beta)
14
+ })
15
+ end
16
+ end
17
+
18
+ shared_context "when not on Cedar" do
19
+ let(:command_line) { mock("Cocaine::CommandLine") }
20
+
21
+ before do
22
+ Cocaine::CommandLine.expects(:new).
23
+ with("bundle exec heroku stack --remote staging").
24
+ returns(command_line)
25
+
26
+ command_line.expects(:run).returns(%{
27
+ aspen-mri-1.8.6
28
+ * bamboo-mri-1.9.2
29
+ bamboo-ree-1.8.7
30
+ cedar (beta)
31
+ })
32
+ end
33
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kumade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-09-07 00:00:00.000000000Z
13
+ date: 2011-09-14 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: heroku
17
- requirement: &70363385430900 !ruby/object:Gem::Requirement
17
+ requirement: &2154315660 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '2.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70363385430900
25
+ version_requirements: *2154315660
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: thor
28
- requirement: &70363385430400 !ruby/object:Gem::Requirement
28
+ requirement: &2154315160 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0.14'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70363385430400
36
+ version_requirements: *2154315160
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rake
39
- requirement: &70363385429940 !ruby/object:Gem::Requirement
39
+ requirement: &2154314700 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,21 @@ dependencies:
44
44
  version: 0.8.7
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *70363385429940
47
+ version_requirements: *2154314700
48
+ - !ruby/object:Gem::Dependency
49
+ name: cocaine
50
+ requirement: &2154314240 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: 0.2.0
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *2154314240
48
59
  - !ruby/object:Gem::Dependency
49
60
  name: rake
50
- requirement: &70363380426460 !ruby/object:Gem::Requirement
61
+ requirement: &2154313780 !ruby/object:Gem::Requirement
51
62
  none: false
52
63
  requirements:
53
64
  - - ! '>='
@@ -55,10 +66,10 @@ dependencies:
55
66
  version: 0.8.7
56
67
  type: :development
57
68
  prerelease: false
58
- version_requirements: *70363380426460
69
+ version_requirements: *2154313780
59
70
  - !ruby/object:Gem::Dependency
60
71
  name: rspec
61
- requirement: &70363380426000 !ruby/object:Gem::Requirement
72
+ requirement: &2154313320 !ruby/object:Gem::Requirement
62
73
  none: false
63
74
  requirements:
64
75
  - - ~>
@@ -66,10 +77,10 @@ dependencies:
66
77
  version: 2.6.0
67
78
  type: :development
68
79
  prerelease: false
69
- version_requirements: *70363380426000
80
+ version_requirements: *2154313320
70
81
  - !ruby/object:Gem::Dependency
71
82
  name: cucumber
72
- requirement: &70363380425540 !ruby/object:Gem::Requirement
83
+ requirement: &2154312860 !ruby/object:Gem::Requirement
73
84
  none: false
74
85
  requirements:
75
86
  - - ~>
@@ -77,10 +88,10 @@ dependencies:
77
88
  version: 1.0.2
78
89
  type: :development
79
90
  prerelease: false
80
- version_requirements: *70363380425540
91
+ version_requirements: *2154312860
81
92
  - !ruby/object:Gem::Dependency
82
93
  name: aruba
83
- requirement: &70363380425080 !ruby/object:Gem::Requirement
94
+ requirement: &2159228600 !ruby/object:Gem::Requirement
84
95
  none: false
85
96
  requirements:
86
97
  - - ~>
@@ -88,10 +99,10 @@ dependencies:
88
99
  version: 0.4.3
89
100
  type: :development
90
101
  prerelease: false
91
- version_requirements: *70363380425080
102
+ version_requirements: *2159228600
92
103
  - !ruby/object:Gem::Dependency
93
104
  name: jammit
94
- requirement: &70363380424620 !ruby/object:Gem::Requirement
105
+ requirement: &2159228140 !ruby/object:Gem::Requirement
95
106
  none: false
96
107
  requirements:
97
108
  - - ~>
@@ -99,7 +110,18 @@ dependencies:
99
110
  version: 0.6.3
100
111
  type: :development
101
112
  prerelease: false
102
- version_requirements: *70363380424620
113
+ version_requirements: *2159228140
114
+ - !ruby/object:Gem::Dependency
115
+ name: bourne
116
+ requirement: &2159227760 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: *2159227760
103
125
  description: A well-tested script for easy deploying to Heroku
104
126
  email:
105
127
  - gabe@thoughtbot.com
@@ -126,18 +148,26 @@ files:
126
148
  - kumade.gemspec
127
149
  - lib/kumade.rb
128
150
  - lib/kumade/base.rb
151
+ - lib/kumade/cli.rb
152
+ - lib/kumade/configuration.rb
129
153
  - lib/kumade/deployer.rb
130
154
  - lib/kumade/deployment_error.rb
131
155
  - lib/kumade/git.rb
156
+ - lib/kumade/heroku.rb
157
+ - lib/kumade/packager.rb
132
158
  - lib/kumade/railtie.rb
133
- - lib/kumade/runner.rb
134
159
  - lib/kumade/version.rb
135
160
  - lib/tasks/deploy.rake
136
161
  - spec/kumade/base_spec.rb
162
+ - spec/kumade/cli_spec.rb
163
+ - spec/kumade/configuration_spec.rb
137
164
  - spec/kumade/deployer_spec.rb
138
165
  - spec/kumade/git_spec.rb
139
- - spec/kumade/runner_spec.rb
166
+ - spec/kumade/heroku_spec.rb
167
+ - spec/kumade/packager_spec.rb
168
+ - spec/kumade_spec.rb
140
169
  - spec/spec_helper.rb
170
+ - spec/support/heroku.rb
141
171
  homepage: http://thoughtbot.com/community/
142
172
  licenses: []
143
173
  post_install_message:
@@ -150,15 +180,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
180
  - - ! '>='
151
181
  - !ruby/object:Gem::Version
152
182
  version: '0'
183
+ segments:
184
+ - 0
185
+ hash: -777649075615778830
153
186
  required_rubygems_version: !ruby/object:Gem::Requirement
154
187
  none: false
155
188
  requirements:
156
189
  - - ! '>='
157
190
  - !ruby/object:Gem::Version
158
191
  version: '0'
192
+ segments:
193
+ - 0
194
+ hash: -777649075615778830
159
195
  requirements: []
160
196
  rubyforge_project:
161
- rubygems_version: 1.8.6
197
+ rubygems_version: 1.8.8
162
198
  signing_key:
163
199
  specification_version: 3
164
200
  summary: A well-tested script for easy deploying to Heroku
@@ -171,7 +207,12 @@ test_files:
171
207
  - features/step_definitions/kumade_steps.rb
172
208
  - features/support/env.rb
173
209
  - spec/kumade/base_spec.rb
210
+ - spec/kumade/cli_spec.rb
211
+ - spec/kumade/configuration_spec.rb
174
212
  - spec/kumade/deployer_spec.rb
175
213
  - spec/kumade/git_spec.rb
176
- - spec/kumade/runner_spec.rb
214
+ - spec/kumade/heroku_spec.rb
215
+ - spec/kumade/packager_spec.rb
216
+ - spec/kumade_spec.rb
177
217
  - spec/spec_helper.rb
218
+ - spec/support/heroku.rb
@@ -1,70 +0,0 @@
1
- require 'optparse'
2
-
3
- module Kumade
4
- class Runner
5
- class << self
6
- attr_reader :environment
7
- end
8
-
9
- def self.run(args=ARGV, out=StringIO.new)
10
- @out = out
11
- @options = parse_arguments!(args)
12
- @environment = args.shift || 'staging'
13
-
14
- swapping_stdout_for(@out) do
15
- deploy
16
- end
17
- end
18
-
19
- def self.deploy
20
- if pretending?
21
- puts "==> In Pretend Mode"
22
- end
23
- puts "==> Deploying to: #{environment}"
24
- Deployer.new(environment, pretending?).deploy
25
- puts "==> Deployed to: #{environment}"
26
- end
27
-
28
- def self.parse_arguments!(args)
29
- options = {}
30
- OptionParser.new do |opts|
31
- opts.banner = "Usage: kumade <environment> [options]"
32
-
33
- opts.on("-p", "--pretend", "Pretend mode: print what kumade would do") do |p|
34
- options[:pretend] = p
35
- end
36
-
37
- opts.on_tail('-v', '--version', 'Show version') do
38
- puts "kumade #{Kumade::VERSION}"
39
- exit
40
- end
41
-
42
- opts.on_tail('-h', '--help', 'Show this message') do
43
- puts opts
44
- exit
45
- end
46
- end.parse!(args)
47
-
48
- options
49
- end
50
-
51
- def self.swapping_stdout_for(io)
52
- begin
53
- $real_stdout = $stdout
54
- $stdout = io unless pretending?
55
- yield
56
- rescue Kumade::DeploymentError
57
- unless pretending?
58
- io.rewind
59
- $real_stdout.print(io.read)
60
- end
61
- ensure
62
- $stdout = $real_stdout
63
- end
64
- end
65
-
66
- def self.pretending?
67
- @options[:pretend]
68
- end
69
- end
70
- end
@@ -1,66 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Kumade::Runner do
4
- subject { Kumade::Runner }
5
- let(:out){ StringIO.new }
6
- let(:environment){ 'my-environment' }
7
-
8
- %w(-p --pretend).each do |pretend_arg|
9
- it "sets pretend mode when run with #{pretend_arg}" do
10
- subject.stub(:deploy)
11
-
12
- subject.run([environment, pretend_arg], out)
13
- subject.pretending?.should be_true
14
- end
15
- end
16
-
17
- it "defaults to staging" do
18
- subject.stub(:deploy)
19
- subject.run([], out)
20
- subject.environment.should == 'staging'
21
- end
22
-
23
- it "deploys" do
24
- Kumade::Deployer.any_instance.should_receive(:deploy)
25
-
26
- subject.run([environment], out)
27
- end
28
-
29
- end
30
-
31
- describe Kumade::Runner do
32
- it 'does not let anything get printed' do
33
- stdout = $stdout
34
- stdout.should_not_receive(:print)
35
- output = StringIO.new
36
-
37
- Kumade::Runner.swapping_stdout_for(output) do
38
- $stdout.puts "Hello, you can't see me."
39
- end
40
-
41
- output.rewind
42
- output.read.should == "Hello, you can't see me.\n"
43
- end
44
-
45
- it 'dumps the output stash to real stdout when an error happens' do
46
- stdout = $stdout
47
- stdout.should_receive(:print)
48
- output = StringIO.new
49
-
50
- Kumade::Runner.swapping_stdout_for(output) do
51
- $stdout.puts "Hello, you can see me!"
52
- raise Kumade::DeploymentError.new("error")
53
- end
54
- end
55
-
56
- it 'prints everything in pretend mode' do
57
- stdout = $stdout
58
- stdout.should_receive(:puts)
59
- output = StringIO.new
60
- Kumade::Runner.should_receive(:pretending?).and_return(true)
61
-
62
- Kumade::Runner.swapping_stdout_for(output) do
63
- $stdout.puts "Hello, you can see me!"
64
- end
65
- end
66
- end