heroku_san 3.0.4 → 4.0.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.
data/.gitignore CHANGED
@@ -4,5 +4,4 @@ pkg
4
4
  Thumbs.db
5
5
  tmp
6
6
  .idea/**
7
- Gemfile.lock
8
7
  *.swp
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Change log (curated)
2
2
 
3
+ ## v4.0.0
4
+
5
+ * Remove dependency on sunsetted 'heroku' gem. Add external dependency
6
+ on Heroku Toolbelt, instead.
7
+ * Deprecate Stage#rake, Stage#sharing_add and Stage#sharing_remove
8
+ * Closes #104
9
+ * Closes #107
10
+ * Closes #108
11
+ * Thanks to sworbel for the pull request (#104)
12
+
3
13
  ## v3.0.4
4
14
 
5
15
  * Documentation syntax highlighting and formatting.
@@ -81,4 +91,4 @@
81
91
 
82
92
  ## v1.3.0
83
93
 
84
- N/A
94
+ N/A
data/Gemfile.lock ADDED
@@ -0,0 +1,132 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ heroku_san (4.0.0)
5
+ activesupport
6
+ heroku-api (>= 0.1.2)
7
+ rake
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ actionmailer (3.2.1)
13
+ actionpack (= 3.2.1)
14
+ mail (~> 2.4.0)
15
+ actionpack (3.2.1)
16
+ activemodel (= 3.2.1)
17
+ activesupport (= 3.2.1)
18
+ builder (~> 3.0.0)
19
+ erubis (~> 2.7.0)
20
+ journey (~> 1.0.1)
21
+ rack (~> 1.4.0)
22
+ rack-cache (~> 1.1)
23
+ rack-test (~> 0.6.1)
24
+ sprockets (~> 2.1.2)
25
+ activemodel (3.2.1)
26
+ activesupport (= 3.2.1)
27
+ builder (~> 3.0.0)
28
+ activerecord (3.2.1)
29
+ activemodel (= 3.2.1)
30
+ activesupport (= 3.2.1)
31
+ arel (~> 3.0.0)
32
+ tzinfo (~> 0.3.29)
33
+ activeresource (3.2.1)
34
+ activemodel (= 3.2.1)
35
+ activesupport (= 3.2.1)
36
+ activesupport (3.2.1)
37
+ i18n (~> 0.6)
38
+ multi_json (~> 1.0)
39
+ arel (3.0.2)
40
+ aruba (0.5.0)
41
+ childprocess (= 0.2.3)
42
+ cucumber (>= 1.1.1)
43
+ ffi (>= 1.0.11)
44
+ rspec-expectations (>= 2.7.0)
45
+ builder (3.0.4)
46
+ childprocess (0.2.3)
47
+ ffi (~> 1.0.6)
48
+ colorize (0.5.8)
49
+ cucumber (1.2.1)
50
+ builder (>= 2.1.2)
51
+ diff-lcs (>= 1.1.3)
52
+ gherkin (~> 2.11.0)
53
+ json (>= 1.4.6)
54
+ diff-lcs (1.1.3)
55
+ erubis (2.7.0)
56
+ excon (0.16.7)
57
+ ffi (1.0.11)
58
+ gherkin (2.11.5)
59
+ json (>= 1.4.6)
60
+ git-smart (0.1.9)
61
+ colorize
62
+ godot (0.1.0)
63
+ heroku-api (0.3.5)
64
+ excon (~> 0.16.1)
65
+ hike (1.2.1)
66
+ i18n (0.6.0)
67
+ journey (1.0.3)
68
+ json (1.7.5)
69
+ mail (2.4.1)
70
+ i18n (>= 0.4.0)
71
+ mime-types (~> 1.16)
72
+ treetop (~> 1.4.8)
73
+ mime-types (1.17.2)
74
+ multi_json (1.1.0)
75
+ polyglot (0.3.3)
76
+ rack (1.4.1)
77
+ rack-cache (1.1)
78
+ rack (>= 0.4)
79
+ rack-ssl (1.3.2)
80
+ rack
81
+ rack-test (0.6.1)
82
+ rack (>= 1.0)
83
+ rails (3.2.1)
84
+ actionmailer (= 3.2.1)
85
+ actionpack (= 3.2.1)
86
+ activerecord (= 3.2.1)
87
+ activeresource (= 3.2.1)
88
+ activesupport (= 3.2.1)
89
+ bundler (~> 1.0)
90
+ railties (= 3.2.1)
91
+ railties (3.2.1)
92
+ actionpack (= 3.2.1)
93
+ activesupport (= 3.2.1)
94
+ rack-ssl (~> 1.3.2)
95
+ rake (>= 0.8.7)
96
+ rdoc (~> 3.4)
97
+ thor (~> 0.14.6)
98
+ rake (0.9.2.2)
99
+ rdoc (3.12)
100
+ json (~> 1.4)
101
+ rspec (2.11.0)
102
+ rspec-core (~> 2.11.0)
103
+ rspec-expectations (~> 2.11.0)
104
+ rspec-mocks (~> 2.11.0)
105
+ rspec-core (2.11.1)
106
+ rspec-expectations (2.11.3)
107
+ diff-lcs (~> 1.1.3)
108
+ rspec-mocks (2.11.3)
109
+ sprockets (2.1.2)
110
+ hike (~> 1.2)
111
+ rack (~> 1.0)
112
+ tilt (~> 1.1, != 1.3.0)
113
+ thor (0.14.6)
114
+ tilt (1.3.3)
115
+ treetop (1.4.10)
116
+ polyglot
117
+ polyglot (>= 0.3.1)
118
+ tzinfo (0.3.31)
119
+
120
+ PLATFORMS
121
+ ruby
122
+
123
+ DEPENDENCIES
124
+ aruba
125
+ bundler (~> 1.1)
126
+ cucumber
127
+ git-smart
128
+ godot
129
+ heroku_san!
130
+ rails (>= 2)
131
+ rake
132
+ rspec
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
  Helpful rake tasks for Heroku.
3
3
 
4
4
  [![Build Status](https://secure.travis-ci.org/fastestforward/heroku_san.png)](http://travis-ci.org/fastestforward/heroku_san)
5
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/fastestforward/heroku_san)
5
6
 
6
7
  ## Install
7
8
 
@@ -144,6 +145,7 @@ A full list of tasks provided:
144
145
  rake heroku:remotes # Add git remotes for all apps in this project
145
146
  rake heroku:restart # Restarts remote servers
146
147
  rake heroku:share # Adds a collaborator (asks for email)
148
+ rake heroku:shell # Opens a bash shell within app
147
149
  rake heroku:unshare # Removes a collaborator (asks for email)
148
150
  rake heroku:stage:all # Select all Heroku apps for later command
149
151
  ```
@@ -161,6 +163,7 @@ Frequently used tasks are aliased into the global namespace:
161
163
  task :migrate => 'heroku:db:migrate'
162
164
  task :logs => 'heroku:logs:default'
163
165
  task 'logs:tail' => 'heroku:logs:tail'
166
+ task 'shell' => 'heroku:shell'
164
167
  ```
165
168
 
166
169
  ## Links
data/Rakefile CHANGED
@@ -1,8 +1,9 @@
1
- require 'bundler'
1
+ #!/usr/bin/env rake
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+ require 'bundler/gem_tasks'
2
5
  require 'rspec/core/rake_task'
3
6
 
4
- Bundler::GemHelper.install_tasks
5
-
6
7
  desc 'Default: run unit tests.'
7
8
  task :default => :spec
8
9
 
@@ -1,4 +1,4 @@
1
- @announce-cmd @slow_process
1
+ @slow_process @announce-cmd
2
2
  Feature: heroku_san can control a project on Heroku
3
3
  WARNING: This WILL create apps on Heroku!
4
4
  You must login with the heroku cli before starting
@@ -9,8 +9,7 @@ Feature: heroku_san can control a project on Heroku
9
9
  Given I have a new Rails project
10
10
  When I am in the project directory
11
11
  And I add heroku_san to the Gemfile
12
- And I run bundle install
13
- Then rake reports that the heroku: tasks are available
12
+ Then rake reports that the heroku: tasks are available
14
13
 
15
14
  Scenario: Manipulates a Rails app on Heroku
16
15
  Given I have a new Rails project
@@ -20,7 +19,6 @@ Feature: heroku_san can control a project on Heroku
20
19
  And I run bundle install
21
20
  And I generate a new config file
22
21
  And I create my project on Heroku
23
- And I list the remote configuration
24
22
  And I curl the app home page
25
23
  And I configure my project
26
24
  And I turn maintenance on
@@ -41,7 +39,6 @@ Feature: heroku_san can control a project on Heroku
41
39
  And I run bundle install
42
40
  And I create a new config/heroku.yml file
43
41
  And I create my project on Heroku
44
- And I list the remote configuration
45
42
  And I curl the app home page
46
43
  And I configure my project
47
44
  And I turn maintenance on
@@ -1,49 +1,50 @@
1
1
  World(Aruba::Api)
2
2
  require 'active_support/core_ext/string/strip'
3
+ require 'godot'
3
4
 
4
5
  Given /^I have a new Rails project$/ do
5
6
  cmd = "rails new test_app --quiet --force --database=postgresql --skip-bundle --skip-javascript --skip-test-unit --skip-sprockets"
6
- run_simple unescape(cmd)
7
+ run_clean unescape(cmd)
7
8
  end
8
9
 
9
10
  Given /^I have a new Sinatra project$/ do
10
11
  create_dir 'test_app/config'
11
- write_file 'test_app/app.rb', <<EOT.strip_heredoc
12
+ write_file 'test_app/app.rb', <<-EOT.strip_heredoc
12
13
  require 'sinatra'
13
14
 
14
15
  get '/' do
15
16
  'Hello, world.'
16
17
  end
17
- EOT
18
+ EOT
18
19
 
19
- write_file 'test_app/config.ru', <<EOT.strip_heredoc
20
+ write_file 'test_app/config.ru', <<-EOT.strip_heredoc
20
21
  require './app'
21
22
  run Sinatra::Application
22
- EOT
23
+ EOT
23
24
 
24
- write_file 'test_app/Gemfile', <<EOT.strip_heredoc
25
+ write_file 'test_app/Gemfile', <<-EOT.strip_heredoc
25
26
  source 'http://rubygems.org'
26
27
  gem 'sinatra'
27
- EOT
28
+ EOT
28
29
 
29
- write_file 'test_app/Rakefile', <<EOT.strip_heredoc
30
+ write_file 'test_app/Rakefile', <<-EOT.strip_heredoc
30
31
  require "bundler/setup"
31
32
  require "heroku_san"
32
33
  config_file = File.join(File.expand_path(File.dirname(__FILE__)), 'config', 'heroku.yml')
33
34
  HerokuSan.project = HerokuSan::Project.new(config_file, :deploy => HerokuSan::Deploy::Sinatra)
34
35
  load "heroku_san/tasks.rb"
35
- EOT
36
+ EOT
36
37
 
37
38
  end
38
39
 
39
40
  When /^I am in the project directory$/ do
40
41
  cd '/test_app'
41
- run_simple 'git init .'
42
+ run_clean 'git init .'
42
43
  end
43
44
 
44
- When /^I commit any changes with "(.*)"$/ do |message|
45
- run_simple 'git add .'
46
- run_simple "git commit -m '#{message}'"
45
+ When /^I commit .* changes with "(.*)"$/ do |message|
46
+ run_clean 'git add .'
47
+ run_clean "git commit -m '#{message}'"
47
48
  end
48
49
 
49
50
  When /^I add heroku_san to the Gemfile$/ do
@@ -54,35 +55,41 @@ When /^I add heroku_san to the Gemfile$/ do
54
55
  EOT
55
56
  end
56
57
 
58
+ def run_clean(cmd)
59
+ Bundler.with_clean_env do
60
+ ENV['NOEXEC'] = 'skip'
61
+ run_simple cmd
62
+ end
63
+ end
64
+
57
65
  When /^I run bundle install$/ do
58
- use_clean_gemset 'heroku_san_test'
59
- run_simple 'bundle install --quiet'
66
+ run_clean "bundle install"
60
67
  end
61
68
 
62
69
  Then /^rake reports that the heroku: tasks are available$/ do
63
- run_simple 'bundle exec rake -T heroku:'
64
- output = stdout_from 'bundle exec rake -T heroku:'
70
+ run_clean 'rake -T heroku:'
71
+ output = stdout_from 'rake -T heroku:'
65
72
  assert_partial_output 'rake heroku:apps', output
66
73
  end
67
74
 
68
75
  When /^I generate a new config file$/ do
69
- run_simple 'bundle exec rails generate heroku_san'
70
- output = stdout_from 'bundle exec rails generate heroku_san'
76
+ run_clean 'rails generate heroku_san'
77
+ output = stdout_from 'rails generate heroku_san'
71
78
  assert_partial_output 'create config/heroku.yml', output
72
79
  overwrite_simple_config_file
73
80
  end
74
81
 
75
82
  When /^I create a new config\/heroku\.yml file$/ do
76
- run_simple 'bundle exec rake heroku:create_config'
77
- output = stdout_from 'bundle exec rake heroku:create_config'
83
+ run_clean 'rake heroku:create_config'
84
+ output = stdout_from 'rake heroku:create_config'
78
85
  assert_matching_output %q{Copied example config to ".*.config.heroku.yml"}, output
79
86
  assert_matching_output %q{Please edit ".*.config.heroku.yml" with your application's settings.}, output
80
87
  overwrite_simple_config_file
81
88
  end
82
89
 
83
90
  When /^I create my project on Heroku$/ do
84
- cmd = 'bundle exec rake test_app heroku:create'
85
- run_simple unescape(cmd)
91
+ cmd = 'rake test_app heroku:create'
92
+ run_clean unescape(cmd)
86
93
  output = stdout_from cmd
87
94
  assert_matching_output %q{test_app: Created ([\w-]+)}, output
88
95
 
@@ -95,21 +102,8 @@ When /^I create my project on Heroku$/ do
95
102
  EOT
96
103
  end
97
104
 
98
- When /^I list the remote configuration$/ do
99
- cmd = 'bundle exec rake test_app heroku:config:list'
100
- run_simple unescape(cmd)
101
- output = stdout_from cmd
102
- assert_partial_output "APP_NAME: #{@app}", output
103
- assert_partial_output "URL: #{@app}.heroku.com", output
104
-
105
- @url = output.match(/\bURL:\s+(.*.heroku.com)\b/)[1]
106
- @curl = unescape("curl --silent http://#{@url}")
107
- end
108
-
109
105
  When /^I curl the app home page$/ do
110
- run_simple @curl
111
- output = stdout_from @curl
112
- assert_partial_output '<h1><strong>Heroku | Welcome to your new app!</strong></h1>', output
106
+ Godot.match("#{@app}.herokuapp.com", 80, %r{<h1><strong>Heroku | Welcome to your new app!</strong></h1>}).should be, "Heroku didn't spin up a new app"
113
107
  end
114
108
 
115
109
  When /^I configure my project$/ do
@@ -121,38 +115,36 @@ When /^I configure my project$/ do
121
115
  DROIDS: marvin
122
116
 
123
117
  EOT
124
- cmd = 'bundle exec rake test_app heroku:config'
125
- run_simple cmd
118
+ cmd = 'rake test_app heroku:config'
119
+ run_clean cmd
126
120
  output = stdout_from cmd
127
121
  assert_partial_output 'DROIDS: marvin', output
128
122
  end
129
123
 
130
124
  When /^I turn maintenance on$/ do
131
- run_simple 'bundle exec rake test_app heroku:maintenance_on'
132
- output = stdout_from 'bundle exec rake test_app heroku:maintenance_on'
125
+ run_clean 'rake test_app heroku:maintenance_on'
126
+ output = stdout_from 'rake test_app heroku:maintenance_on'
133
127
  assert_partial_output 'test_app: Maintenance mode enabled.', output
134
-
135
- run_simple @curl
136
- output = stdout_from @curl
137
- assert_partial_output '<title>Offline for Maintenance</title>', output
128
+
129
+ Godot.match("#{@app}.herokuapp.com", 80, %r{<title>Offline for Maintenance</title>}).should be, "App is not offline"
138
130
  end
139
131
 
140
132
  When /^I turn maintenance off$/ do
141
- run_simple 'bundle exec rake test_app heroku:maintenance_off'
142
- output = stdout_from 'bundle exec rake test_app heroku:maintenance_off'
133
+ run_clean 'rake test_app heroku:maintenance_off'
134
+ output = stdout_from 'rake test_app heroku:maintenance_off'
143
135
  assert_partial_output 'test_app: Maintenance mode disabled.', output
144
136
  assert_app_is_running
145
137
  end
146
138
 
147
139
  When /^I restart my project$/ do
148
- run_simple 'bundle exec rake test_app heroku:restart'
149
- output = stdout_from 'bundle exec rake test_app heroku:restart'
140
+ run_clean 'rake test_app heroku:restart'
141
+ output = stdout_from 'rake test_app heroku:restart'
150
142
  assert_partial_output 'test_app: Restarted.', output
151
143
  assert_app_is_running
152
144
  end
153
145
 
154
146
  When /^I generate a scaffold$/ do
155
- run_simple 'bundle exec rails generate scaffold droid'
147
+ run_clean 'rails generate scaffold droid'
156
148
  append_to_file 'app/views/droids/index.html.erb', %Q{\n<div><code><%= ENV['DROIDS'] -%></code></div>\n}
157
149
  end
158
150
 
@@ -166,16 +158,16 @@ EOT
166
158
  end
167
159
 
168
160
  When /^I deploy my project$/ do
169
- run_simple 'bundle exec rake test_app deploy'
170
- assert_partial_output "http://#{@app}.heroku.com deployed to Heroku", all_output
161
+ run_clean 'rake test_app deploy'
162
+ assert_partial_output "http://#{@app}.herokuapp.com deployed to Heroku", all_output
171
163
  end
172
164
 
173
165
  When /^I list all apps on Heroku$/ do
174
166
  sha = in_current_dir do
175
167
  `git rev-parse HEAD`.chomp
176
168
  end
177
- run_simple 'bundle exec rake heroku:apps'
178
- output = stdout_from 'bundle exec rake heroku:apps'
169
+ run_clean 'rake heroku:apps'
170
+ output = stdout_from 'rake heroku:apps'
179
171
  assert_partial_output "test_app is shorthand for the Heroku app #{@app} located at:", output
180
172
  assert_partial_output "git@heroku.com:#{@app}.git", output
181
173
  assert_partial_output "@ #{sha} master", output
@@ -191,24 +183,22 @@ When /^I install an addon$/ do
191
183
 
192
184
  END_CONFIG
193
185
 
194
- run_simple 'bundle exec rake test_app heroku:addons'
195
- output = stdout_from 'bundle exec rake test_app heroku:addons'
196
- # The output should show the default addons...
197
- assert_partial_output "shared-database:5mb", output
198
- # ... and the new one ...
186
+ run_clean 'rake test_app heroku:addons'
187
+ output = stdout_from 'rake test_app heroku:addons'
188
+ # The output should show the new one ...
199
189
  assert_partial_output "deployhooks:campfire", output
200
190
  # ... with a note about needing to configure it.
201
191
  assert_partial_output "https://api.heroku.com/myapps/#{@app}/addons/deployhooks:campfire", output
202
192
  end
203
193
 
204
194
  Then /^heroku_san is green$/ do
205
- run_simple "bundle exec heroku apps:destroy #{@app} --confirm #{@app}"
195
+ run_clean "heroku apps:destroy #{@app} --confirm #{@app}"
206
196
  end
207
197
 
208
198
  def assert_app_is_running
209
- run_simple @curl + "/droids"
210
- output = stdout_from @curl + "/droids"
211
- assert_partial_output %Q{<code>marvin</code>}, output
199
+ vladimir = Godot.new("#{@app}.herokuapp.com", 80)
200
+ vladimir.timeout = 30
201
+ vladimir.match(%r{<code>marvin</code>}, 'droids').should be, "http://#{@app}.herokuapp.com/droids are not the droids I'm looking for"
212
202
  end
213
203
 
214
204
  def overwrite_simple_config_file
@@ -217,4 +207,4 @@ def overwrite_simple_config_file
217
207
  test_app:
218
208
 
219
209
  EOT
220
- end
210
+ end
data/heroku_san.gemspec CHANGED
@@ -11,37 +11,41 @@ Gem::Specification.new do |s|
11
11
  s.description = %q{Manage multiple Heroku instances/apps for a single Rails app using Rake}
12
12
  s.email = %q{elijah.miller@gmail.com}
13
13
  s.homepage = %q{http://github.com/fastestforward/heroku_san}
14
+ s.license = "MIT"
14
15
  s.files = `git ls-files`.split("\n")
15
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
17
  s.require_paths = ["lib"]
17
18
  s.extra_rdoc_files = ["README.md"]
18
19
  s.rubygems_version = %q{1.6.1}
19
- s.summary = %q{A bunch of useful Rake tasks for managing your Heroku apps}
20
+ s.summary = %q{
21
+ A bunch of useful Rake tasks for managing your Heroku apps.
22
+ NOTE: The Heroku Toolbelt must be installed to use this gem.
23
+ https://toolbelt.heroku.com/
24
+ }
20
25
 
21
26
  if s.respond_to? :specification_version then
22
27
  s.specification_version = 3
23
28
 
24
29
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
25
- s.add_development_dependency(%q<rails>, ['>= 2'])
26
- s.add_runtime_dependency(%q<heroku>, ['>= 2'])
27
30
  s.add_runtime_dependency(%q<heroku-api>, ['>= 0.1.2'])
28
31
  s.add_runtime_dependency(%q<rake>)
29
32
  s.add_runtime_dependency('activesupport')
33
+ s.add_development_dependency(%q<rails>, ['>= 2'])
34
+ s.add_development_dependency(%q<rspec>)
30
35
  s.add_development_dependency(%q<aruba>)
31
36
  s.add_development_dependency(%q<cucumber>)
32
37
  s.add_development_dependency(%q<rake>)
33
38
  s.add_development_dependency(%q<bundler>, ['~> 1.1 '])
34
39
  s.add_development_dependency('git-smart')
40
+ s.add_development_dependency('godot')
35
41
  else
36
42
  s.add_dependency(%q<rails>, ['>= 2'])
37
- s.add_dependency(%q<heroku>, ['>= 2'])
38
43
  s.add_dependency(%q<heroku-api>, ['>= 0.1.2'])
39
44
  s.add_dependency(%q<aruba>)
40
45
  s.add_dependency(%q<cucumber>)
41
46
  end
42
47
  else
43
48
  s.add_dependency(%q<rails>, ['>= 2'])
44
- s.add_dependency(%q<heroku>, ['>= 2'])
45
49
  s.add_dependency(%q<heroku-api>, ['>= 0.1.2'])
46
50
  s.add_dependency(%q<aruba>)
47
51
  s.add_dependency(%q<cucumber>)
@@ -6,7 +6,7 @@ module HerokuSan
6
6
  def deploy
7
7
  # TODO: Add announce/logger
8
8
  super
9
- @stage.rake('db:migrate')
9
+ @stage.run('rake db:migrate')
10
10
  @stage.restart
11
11
  end
12
12
  end
@@ -1,8 +1,8 @@
1
- require 'heroku'
2
- require 'heroku/api'
1
+ require 'heroku-api'
3
2
  require 'json'
4
3
  require 'active_support/core_ext/object/blank'
5
4
  require 'active_support/core_ext/hash/keys'
5
+ require 'active_support/core_ext/hash/slice'
6
6
 
7
7
  MOCK = false unless defined?(MOCK)
8
8
 
@@ -20,7 +20,7 @@ module HerokuSan
20
20
  end
21
21
 
22
22
  def heroku
23
- @heroku ||= Heroku::API.new(:api_key => ENV['HEROKU_API_KEY'] || Heroku::Auth.api_key, :mock => MOCK)
23
+ @heroku ||= Heroku::API.new(:api_key => auth_token, :mock => MOCK)
24
24
  end
25
25
 
26
26
  def app
@@ -48,10 +48,10 @@ module HerokuSan
48
48
  end
49
49
 
50
50
  def run(command, args = nil)
51
- if stack =~ /cedar/
52
- sh_heroku "run #{command} #{args}"
51
+ if stack !~ /aspen|bamboo/
52
+ sh_heroku "run", command, *args
53
53
  else
54
- sh_heroku "run:#{command} #{args}"
54
+ sh_heroku "run:#{command}", *args
55
55
  end
56
56
  end
57
57
 
@@ -61,7 +61,7 @@ module HerokuSan
61
61
  end
62
62
 
63
63
  def migrate
64
- rake('db:migrate')
64
+ run('rake db:migrate')
65
65
  restart
66
66
  end
67
67
 
@@ -69,10 +69,9 @@ module HerokuSan
69
69
  strategy = @options['deploy'].new(self, commit, force)
70
70
  strategy.deploy
71
71
  end
72
-
72
+
73
73
  def rake(*args)
74
- run 'rake', args.join(' ')
75
- # heroku.rake app, args.join(' ')
74
+ raise HerokuSan::Deprecated.new("use Stage#run instead")
76
75
  end
77
76
 
78
77
  def maintenance(action = nil)
@@ -90,20 +89,20 @@ module HerokuSan
90
89
  end
91
90
 
92
91
  def create
93
- params = Hash[@options.select{|k,v| %w[app stack].include? k}].stringify_keys
92
+ params = @options.slice('app', 'stack').stringify_keys
94
93
  params['name'] = params.delete('app')
95
94
  response = heroku.post_app(params)
96
95
  response.body['name']
97
96
  end
98
97
 
99
98
  def sharing_add(email) # DEPREC?
100
- sh_heroku "sharing:add #{email.chomp}"
99
+ raise HerokuSan::Deprecated
101
100
  end
102
-
101
+
103
102
  def sharing_remove(email) # DEPREC?
104
- sh_heroku "sharing:remove #{email.chomp}"
103
+ raise HerokuSan::Deprecated
105
104
  end
106
-
105
+
107
106
  def long_config
108
107
  heroku.get_config_vars(app).body
109
108
  end
@@ -138,9 +137,18 @@ module HerokuSan
138
137
  end
139
138
 
140
139
  private
141
-
142
- def sh_heroku(command)
143
- sh "heroku #{command} --app #{app}"
140
+
141
+ def auth_token
142
+ @auth_token ||= (ENV['HEROKU_API_KEY'] || `heroku auth:token`.chomp unless MOCK)
143
+ end
144
+
145
+ def sh_heroku(*command)
146
+ cmd = (command + ['--app', app]).compact
147
+ show_command = cmd.join(' ')
148
+ $stderr.puts show_command if @debug
149
+ ok = system "heroku", *cmd
150
+ status = $?
151
+ ok or fail "Command failed with status (#{status.exitstatus}): [heroku #{show_command}]"
144
152
  end
145
153
  end
146
154
  end
@@ -42,24 +42,12 @@ namespace :heroku do
42
42
  end
43
43
  end
44
44
 
45
- desc 'Adds a collaborator (asks for email)'
46
45
  task :share do
47
- print "Email address of collaborator to add: "
48
- $stdout.flush
49
- email = $stdin.gets
50
- each_heroku_app do |stage|
51
- stage.sharing_add email
52
- end
46
+ raise HerokuSan::Deprecated
53
47
  end
54
48
 
55
- desc 'Removes a collaborator (asks for email)'
56
49
  task :unshare do
57
- print "Email address of collaborator to remove: "
58
- $stdout.flush
59
- email = $stdin.gets
60
- each_heroku_app do |stage|
61
- stage.sharing_remove email
62
- end
50
+ raise HerokuSan::Deprecated
63
51
  end
64
52
 
65
53
  desc 'Lists configured apps'
@@ -119,7 +107,6 @@ namespace :heroku do
119
107
 
120
108
  desc 'Creates an example configuration file'
121
109
  task :create_config do
122
- # FIXME: sh "rails generate heroku_san"
123
110
  filename = %Q{#{HerokuSan.project.config_file.to_s}}
124
111
  if HerokuSan.project.create_config
125
112
  puts "Copied example config to #{filename.inspect}"
@@ -172,7 +159,7 @@ namespace :heroku do
172
159
  desc 'Runs a rake task remotely'
173
160
  task :rake, [:task] do |t, args|
174
161
  each_heroku_app do |stage|
175
- puts stage.rake args.task
162
+ puts stage.run "rake #{args.task}"
176
163
  end
177
164
  end
178
165
 
@@ -1,3 +1,3 @@
1
1
  module HerokuSan
2
- VERSION = "3.0.4"
2
+ VERSION = "4.0.0"
3
3
  end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ # https://github.com/fastestforward/heroku_san/issues/105
4
+
5
+ =begin
6
+ Expected(202) <=> Actual(422 Unprocessable Entity)
7
+ request => {:connect_timeout=>60, :headers=>{"Accept"=>"application/json", "Accept-Encoding"=>"gzip", "Authorization"=>"Basic OjUwZTc4NjgxZDhmYzcxZDI3Yzc5ZTM3MTZhNDk3Nzk1MzU2Mzk4ZTM=", "User-Agent"=>"heroku-rb/0.1.8", "X-Heroku-API-Version"=>"3", "X-Ruby-Version"=>"1.9.2", "X-Ruby-Platform"=>"x86_64-darwin10.8.0", "Host"=>"api.heroku.com:443", "Content-Length"=>0}, :instrumentor_name=>"excon", :mock=>false, :read_timeout=>60, :retry_limit=>4, :ssl_ca_file=>"/Users/kmayer/.rvm/gems/ruby-1.9.2-p320/gems/excon-0.13.4/data/cacert.pem", :ssl_verify_peer=>true, :write_timeout=>60, :host=>"api.heroku.com", :path=>"/apps", :port=>"443", :query=>{"app[name]"=>"stark-window-5734"}, :scheme=>"https", :expects=>202, :method=>:post}
8
+ response => #<Excon::Response:0x00000100e07288 @body="{\"error\":\"Name is already taken\"}", @headers={"Cache-Control"=>"no-cache", "Content-Type"=>"application/json; charset=utf-8", "Date"=>"Sun, 29 Jul 2012 19:24:33 GMT", "Server"=>"nginx/1.0.14", "Status"=>"422 Unprocessable Entity", "Strict-Transport-Security"=>"max-age=500", "X-RateLimit-Limit"=>"486", "X-RateLimit-Remaining"=>"485", "X-RateLimit-Reset"=>"1343589933", "X-Runtime"=>"426", "Content-Length"=>"33", "Connection"=>"keep-alive"}, @status=422>
9
+ =end
10
+
11
+ describe "Handle Excon exceptions" do
12
+ it "should report the error in a more readable format"
13
+ end
@@ -8,7 +8,7 @@ module HerokuSan
8
8
  it "calls push, rake db:migrate & restart" do
9
9
  subject = described_class.new(stage, {})
10
10
  stage.should_receive(:push) { "pushed" } # "mock" super
11
- stage.should_receive(:rake).with('db:migrate') { "migrated" }
11
+ stage.should_receive(:run).with('rake db:migrate') { "migrated" }
12
12
  stage.should_receive(:restart) { "restarted" }
13
13
  subject.deploy
14
14
  end
@@ -1,13 +1,9 @@
1
1
  require 'spec_helper'
2
- require 'heroku/client'
3
2
 
4
3
  describe HerokuSan::Stage do
5
4
  include Git
6
- subject { HerokuSan::Stage.new('production', {"app" => "awesomeapp", "stack" => "bamboo-ree-1.8.7"})}
5
+ subject { HerokuSan::Stage.new('production', {"app" => "awesomeapp", "stack" => "cedar"})}
7
6
  STOCK_CONFIG = {"BUNDLE_WITHOUT"=>"development:test", "LANG"=>"en_US.UTF-8", "RACK_ENV"=>"production"}
8
- before do
9
- Heroku::Auth.stub(:api_key) { 'API_KEY' }
10
- end
11
7
 
12
8
  context "initializes" do
13
9
  subject { HerokuSan::Stage.new('production',
@@ -73,13 +69,13 @@ describe HerokuSan::Stage do
73
69
 
74
70
  describe "#run" do
75
71
  it "runs commands using the pre-cedar format" do
76
- subject.should_receive(:sh).with("heroku run:rake foo bar bleh --app awesomeapp")
77
- subject.run 'rake', 'foo bar bleh'
72
+ subject = HerokuSan::Stage.new('production', {"app" => "awesomeapp", "stack" => "aspen"})
73
+ subject.should_receive(:system).with("heroku", "run:rake foo bar bleh", "--app", "awesomeapp") { true }
74
+ subject.run 'rake foo bar bleh'
78
75
  end
79
76
  it "runs commands using the new cedar format" do
80
- subject = HerokuSan::Stage.new('production', {"app" => "awesomeapp", "stack" => "cedar"})
81
- subject.should_receive(:sh).with("heroku run worker foo bar bleh --app awesomeapp")
82
- subject.run 'worker', 'foo bar bleh'
77
+ subject.should_receive(:system).with("heroku", "run", "worker foo bar bleh", "--app", "awesomeapp") { true }
78
+ subject.run 'worker foo bar bleh'
83
79
  end
84
80
  end
85
81
 
@@ -108,7 +104,7 @@ describe HerokuSan::Stage do
108
104
  describe "#migrate" do
109
105
  it "runs rake db:migrate" do
110
106
  with_app(subject, 'name' => subject.app) do |app_data|
111
- subject.should_receive(:rake).with('db:migrate').and_return 'output:'
107
+ subject.should_receive(:run).with('rake db:migrate').and_return 'output:'
112
108
  subject.migrate.should == "restarted"
113
109
  end
114
110
  end
@@ -192,24 +188,10 @@ describe HerokuSan::Stage do
192
188
  end
193
189
  it "uses the stack from the config" do
194
190
  (@app = subject.create).should == 'awesomeapp'
195
- subject.heroku.get_stack(@app).body.detect{|stack| stack['current']}['name'].should == 'bamboo-ree-1.8.7'
191
+ subject.heroku.get_stack(@app).body.detect{|stack| stack['current']}['name'].should == 'cedar'
196
192
  end
197
193
  end
198
194
 
199
- describe "#sharing_add" do
200
- it "add collaborators" do
201
- subject.should_receive(:sh).with("heroku sharing:add email@example.com --app awesomeapp")
202
- subject.sharing_add 'email@example.com'
203
- end
204
- end
205
-
206
- describe "#sharing_remove" do
207
- it "removes collaborators" do
208
- subject.should_receive(:sh).with("heroku sharing:remove email@example.com --app awesomeapp")
209
- subject.sharing_remove 'email@example.com'
210
- end
211
- end
212
-
213
195
  describe "#long_config" do
214
196
  it "returns the remote config" do
215
197
  with_app(subject, 'name' => subject.app) do |app_data|
@@ -228,11 +210,11 @@ describe HerokuSan::Stage do
228
210
 
229
211
  describe "#logs" do
230
212
  it "returns log files" do
231
- subject.should_receive(:sh).with("heroku logs --app awesomeapp")
213
+ subject.should_receive(:system).with("heroku", "logs", "--app", "awesomeapp") { true }
232
214
  subject.logs
233
215
  end
234
216
  it "tails log files" do
235
- subject.should_receive(:sh).with("heroku logs --tail --app awesomeapp")
217
+ subject.should_receive(:system).with("heroku", "logs --tail", "--app", "awesomeapp") { true }
236
218
  subject.logs(:tail)
237
219
  end
238
220
  end
metadata CHANGED
@@ -1,10 +1,15 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: heroku_san
3
- version: !ruby/object:Gem::Version
4
- version: 3.0.4
3
+ version: !ruby/object:Gem::Version
4
+ hash: 63
5
5
  prerelease:
6
+ segments:
7
+ - 4
8
+ - 0
9
+ - 0
10
+ version: 4.0.0
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Elijah Miller
9
14
  - Glenn Roberts
10
15
  - Ryan Ahearn
@@ -12,183 +17,183 @@ authors:
12
17
  autorequire:
13
18
  bindir: bin
14
19
  cert_chain: []
15
- date: 2012-07-05 00:00:00.000000000 Z
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
18
- name: rails
19
- requirement: !ruby/object:Gem::Requirement
20
+
21
+ date: 2012-11-09 00:00:00 Z
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
20
25
  none: false
21
- requirements:
22
- - - ! '>='
23
- - !ruby/object:Gem::Version
24
- version: '2'
25
- type: :development
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 31
30
+ segments:
31
+ - 0
32
+ - 1
33
+ - 2
34
+ version: 0.1.2
26
35
  prerelease: false
27
- version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '2'
33
- - !ruby/object:Gem::Dependency
34
- name: heroku
35
- requirement: !ruby/object:Gem::Requirement
36
- none: false
37
- requirements:
38
- - - ! '>='
39
- - !ruby/object:Gem::Version
40
- version: '2'
41
36
  type: :runtime
42
- prerelease: false
43
- version_requirements: !ruby/object:Gem::Requirement
44
- none: false
45
- requirements:
46
- - - ! '>='
47
- - !ruby/object:Gem::Version
48
- version: '2'
49
- - !ruby/object:Gem::Dependency
50
37
  name: heroku-api
51
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ version_requirements: &id002 !ruby/object:Gem::Requirement
52
41
  none: false
53
- requirements:
54
- - - ! '>='
55
- - !ruby/object:Gem::Version
56
- version: 0.1.2
57
- type: :runtime
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
58
49
  prerelease: false
59
- version_requirements: !ruby/object:Gem::Requirement
60
- none: false
61
- requirements:
62
- - - ! '>='
63
- - !ruby/object:Gem::Version
64
- version: 0.1.2
65
- - !ruby/object:Gem::Dependency
50
+ type: :runtime
66
51
  name: rake
67
- requirement: !ruby/object:Gem::Requirement
52
+ requirement: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
68
55
  none: false
69
- requirements:
70
- - - ! '>='
71
- - !ruby/object:Gem::Version
72
- version: '0'
73
- type: :runtime
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
74
63
  prerelease: false
75
- version_requirements: !ruby/object:Gem::Requirement
76
- none: false
77
- requirements:
78
- - - ! '>='
79
- - !ruby/object:Gem::Version
80
- version: '0'
81
- - !ruby/object:Gem::Dependency
64
+ type: :runtime
82
65
  name: activesupport
83
- requirement: !ruby/object:Gem::Requirement
66
+ requirement: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ version_requirements: &id004 !ruby/object:Gem::Requirement
84
69
  none: false
85
- requirements:
86
- - - ! '>='
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- type: :runtime
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 7
74
+ segments:
75
+ - 2
76
+ version: "2"
90
77
  prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- none: false
93
- requirements:
94
- - - ! '>='
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: aruba
99
- requirement: !ruby/object:Gem::Requirement
78
+ type: :development
79
+ name: rails
80
+ requirement: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ version_requirements: &id005 !ruby/object:Gem::Requirement
100
83
  none: false
101
- requirements:
102
- - - ! '>='
103
- - !ruby/object:Gem::Version
104
- version: '0'
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ prerelease: false
105
92
  type: :development
93
+ name: rspec
94
+ requirement: *id005
95
+ - !ruby/object:Gem::Dependency
96
+ version_requirements: &id006 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
106
105
  prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
106
+ type: :development
107
+ name: aruba
108
+ requirement: *id006
109
+ - !ruby/object:Gem::Dependency
110
+ version_requirements: &id007 !ruby/object:Gem::Requirement
108
111
  none: false
109
- requirements:
110
- - - ! '>='
111
- - !ruby/object:Gem::Version
112
- version: '0'
113
- - !ruby/object:Gem::Dependency
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ hash: 3
116
+ segments:
117
+ - 0
118
+ version: "0"
119
+ prerelease: false
120
+ type: :development
114
121
  name: cucumber
115
- requirement: !ruby/object:Gem::Requirement
122
+ requirement: *id007
123
+ - !ruby/object:Gem::Dependency
124
+ version_requirements: &id008 !ruby/object:Gem::Requirement
116
125
  none: false
117
- requirements:
118
- - - ! '>='
119
- - !ruby/object:Gem::Version
120
- version: '0'
121
- type: :development
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ hash: 3
130
+ segments:
131
+ - 0
132
+ version: "0"
122
133
  prerelease: false
123
- version_requirements: !ruby/object:Gem::Requirement
124
- none: false
125
- requirements:
126
- - - ! '>='
127
- - !ruby/object:Gem::Version
128
- version: '0'
129
- - !ruby/object:Gem::Dependency
134
+ type: :development
130
135
  name: rake
131
- requirement: !ruby/object:Gem::Requirement
136
+ requirement: *id008
137
+ - !ruby/object:Gem::Dependency
138
+ version_requirements: &id009 !ruby/object:Gem::Requirement
132
139
  none: false
133
- requirements:
134
- - - ! '>='
135
- - !ruby/object:Gem::Version
136
- version: '0'
137
- type: :development
140
+ requirements:
141
+ - - ~>
142
+ - !ruby/object:Gem::Version
143
+ hash: 13
144
+ segments:
145
+ - 1
146
+ - 1
147
+ version: "1.1"
138
148
  prerelease: false
139
- version_requirements: !ruby/object:Gem::Requirement
140
- none: false
141
- requirements:
142
- - - ! '>='
143
- - !ruby/object:Gem::Version
144
- version: '0'
145
- - !ruby/object:Gem::Dependency
149
+ type: :development
146
150
  name: bundler
147
- requirement: !ruby/object:Gem::Requirement
151
+ requirement: *id009
152
+ - !ruby/object:Gem::Dependency
153
+ version_requirements: &id010 !ruby/object:Gem::Requirement
148
154
  none: false
149
- requirements:
150
- - - ~>
151
- - !ruby/object:Gem::Version
152
- version: '1.1'
153
- type: :development
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ hash: 3
159
+ segments:
160
+ - 0
161
+ version: "0"
154
162
  prerelease: false
155
- version_requirements: !ruby/object:Gem::Requirement
156
- none: false
157
- requirements:
158
- - - ~>
159
- - !ruby/object:Gem::Version
160
- version: '1.1'
161
- - !ruby/object:Gem::Dependency
163
+ type: :development
162
164
  name: git-smart
163
- requirement: !ruby/object:Gem::Requirement
165
+ requirement: *id010
166
+ - !ruby/object:Gem::Dependency
167
+ version_requirements: &id011 !ruby/object:Gem::Requirement
164
168
  none: false
165
- requirements:
166
- - - ! '>='
167
- - !ruby/object:Gem::Version
168
- version: '0'
169
- type: :development
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ hash: 3
173
+ segments:
174
+ - 0
175
+ version: "0"
170
176
  prerelease: false
171
- version_requirements: !ruby/object:Gem::Requirement
172
- none: false
173
- requirements:
174
- - - ! '>='
175
- - !ruby/object:Gem::Version
176
- version: '0'
177
+ type: :development
178
+ name: godot
179
+ requirement: *id011
177
180
  description: Manage multiple Heroku instances/apps for a single Rails app using Rake
178
181
  email: elijah.miller@gmail.com
179
182
  executables: []
183
+
180
184
  extensions: []
181
- extra_rdoc_files:
185
+
186
+ extra_rdoc_files:
182
187
  - README.md
183
- files:
188
+ files:
184
189
  - .gitignore
185
190
  - .travis.yml
186
191
  - CHANGELOG.md
187
192
  - Gemfile
193
+ - Gemfile.lock
188
194
  - LICENSE
189
195
  - README.md
190
196
  - Rakefile
191
- - autotest/discover.rb
192
197
  - cucumber.yml
193
198
  - examples/auto_tagger.rake
194
199
  - examples/deploy_strategies.md
@@ -213,6 +218,7 @@ files:
213
218
  - lib/railtie.rb
214
219
  - lib/tasks/heroku.rake
215
220
  - lib/templates/heroku.example.yml
221
+ - spec/bugs/issue_105_spec.rb
216
222
  - spec/fixtures/example.yml
217
223
  - spec/fixtures/extended_config.yml
218
224
  - spec/fixtures/old_format.yml
@@ -225,38 +231,45 @@ files:
225
231
  - spec/spec_helper.rb
226
232
  - spec/support/heroku.rb
227
233
  homepage: http://github.com/fastestforward/heroku_san
228
- licenses: []
234
+ licenses:
235
+ - MIT
229
236
  post_install_message:
230
237
  rdoc_options: []
231
- require_paths:
238
+
239
+ require_paths:
232
240
  - lib
233
- required_ruby_version: !ruby/object:Gem::Requirement
241
+ required_ruby_version: !ruby/object:Gem::Requirement
234
242
  none: false
235
- requirements:
236
- - - ! '>='
237
- - !ruby/object:Gem::Version
238
- version: '0'
239
- segments:
243
+ requirements:
244
+ - - ">="
245
+ - !ruby/object:Gem::Version
246
+ hash: 3
247
+ segments:
240
248
  - 0
241
- hash: -3097599512133406407
242
- required_rubygems_version: !ruby/object:Gem::Requirement
249
+ version: "0"
250
+ required_rubygems_version: !ruby/object:Gem::Requirement
243
251
  none: false
244
- requirements:
245
- - - ! '>='
246
- - !ruby/object:Gem::Version
247
- version: '0'
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ hash: 3
256
+ segments:
257
+ - 0
258
+ version: "0"
248
259
  requirements: []
260
+
249
261
  rubyforge_project:
250
262
  rubygems_version: 1.8.24
251
263
  signing_key:
252
264
  specification_version: 3
253
- summary: A bunch of useful Rake tasks for managing your Heroku apps
254
- test_files:
265
+ summary: "A bunch of useful Rake tasks for managing your Heroku apps. NOTE: The Heroku Toolbelt must be installed to use this gem. https://toolbelt.heroku.com/"
266
+ test_files:
255
267
  - features/config.feature
256
268
  - features/extended-config.feature
257
269
  - features/remote.feature
258
270
  - features/step_definitions/remote_steps.rb
259
271
  - features/support/env.rb
272
+ - spec/bugs/issue_105_spec.rb
260
273
  - spec/fixtures/example.yml
261
274
  - spec/fixtures/extended_config.yml
262
275
  - spec/fixtures/old_format.yml
data/autotest/discover.rb DELETED
@@ -1 +0,0 @@
1
- Autotest.add_discovery { "rspec2" }