heroku_san 4.2.5 → 4.3.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 @@
1
+ heroku_san
@@ -0,0 +1 @@
1
+ ruby-1.9.3-p327
@@ -1,5 +1,10 @@
1
1
  # Change Log (curated)
2
2
 
3
+ ## v4.3.0
4
+
5
+ * Add #ensure_{all|one}_worker(s)_running -- which will restart your web workers until they stay up
6
+ * Closes #137
7
+
3
8
  ## v4.2.0
4
9
 
5
10
  * Wrap API calls so that errors are reported in a more human-fiendly way
data/Gemfile CHANGED
@@ -1,4 +1,23 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify dependencies in heroku_san.gemspec
4
- gemspec
4
+ gemspec
5
+
6
+ group :development do
7
+ gem 'rails', '>= 2'
8
+ gem 'rspec'
9
+ gem 'aruba'
10
+ gem 'cucumber'
11
+ gem 'rake'
12
+ gem 'bundler', '~> 1.1'
13
+ gem 'git-smart'
14
+ gem 'godot'
15
+ gem 'guard'
16
+ gem 'rb-inotify', :require => false
17
+ gem 'rb-fsevent', :require => false
18
+ gem 'rb-fchange', :require => false
19
+ gem 'terminal-notifier-guard'
20
+ gem 'guard-rspec'
21
+ gem 'guard-bundler'
22
+ gem 'guard-cucumber'
23
+ end
@@ -0,0 +1,21 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'bundler' do
5
+ watch('Gemfile')
6
+ watch(/^.+\.gemspec/)
7
+ end
8
+
9
+ guard 'rspec' do
10
+ watch(%r{^spec/.+_spec\.rb$})
11
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
12
+ watch('spec/spec_helper.rb') { "spec" }
13
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
14
+ watch(%r{^spec/fixtures/(.+)\.yml$}) { "spec" }
15
+ end
16
+
17
+ guard 'cucumber', :cli => '--tags ~@slow_process --format progress' do
18
+ watch(%r{^features/.+\.feature$})
19
+ watch(%r{^features/support/.+$}) { 'features' }
20
+ watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
21
+ end
data/README.md CHANGED
@@ -2,7 +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
+ [![Code Climate](https://codeclimate.com/github/fastestforward/heroku_san.png)](https://codeclimate.com/github/fastestforward/heroku_san)
6
6
 
7
7
  ## Install
8
8
 
@@ -1,7 +1,7 @@
1
1
  Feature: Command Line
2
2
 
3
3
  Background:
4
- Given I run `rails new heroku_san_test --quiet --force --database=postgresql --skip-bundle --skip-javascript --skip-test-unit --skip-sprockets`
4
+ Given I run `rails new heroku_san_test --quiet --force --skip-active-record --skip-bundle --skip-javascript --skip-test-unit --skip-sprockets`
5
5
  And I cd to "heroku_san_test"
6
6
  And I overwrite "Gemfile" with:
7
7
  """
@@ -15,7 +15,7 @@ Feature: heroku_san can control a project on Heroku
15
15
  Given I have a new Rails project
16
16
  When I am in the project directory
17
17
  And I commit any changes with "Initial commit"
18
- And I add heroku_san to the Gemfile
18
+ And I add heroku_san to the rails Gemfile
19
19
  And I run bundle install
20
20
  And I generate a new config file
21
21
  And I create my project on Heroku
@@ -35,7 +35,7 @@ Feature: heroku_san can control a project on Heroku
35
35
  Given I have a new Sinatra project
36
36
  When I am in the project directory
37
37
  And I commit any changes with "Initial commit"
38
- And I add heroku_san to the Gemfile
38
+ And I add heroku_san to the sinatra Gemfile
39
39
  And I run bundle install
40
40
  And I create a new config/heroku.yml file
41
41
  And I create my project on Heroku
@@ -3,7 +3,7 @@ require 'active_support/core_ext/string/strip'
3
3
  require 'godot'
4
4
 
5
5
  Given /^I have a new Rails project$/ do
6
- cmd = "rails new test_app --quiet --force --database=postgresql --skip-bundle --skip-javascript --skip-test-unit --skip-sprockets"
6
+ cmd = "rails new test_app --quiet --force --skip-bundle --skip-javascript --skip-test-unit --skip-sprockets"
7
7
  run_clean unescape(cmd)
8
8
  end
9
9
 
@@ -51,8 +51,24 @@ When /^I tag the commit with "([^"]*)" annotated by "([^"]*)"$/ do |tag, annotat
51
51
  run_clean "git tag -a '#{tag}' -m '#{annotation}' HEAD"
52
52
  end
53
53
 
54
- When /^I add heroku_san to the Gemfile$/ do
55
- append_to_file 'Gemfile', <<EOT.strip_heredoc
54
+ When /^I add heroku_san to the rails Gemfile$/ do
55
+ overwrite_file 'Gemfile', <<EOT.strip_heredoc
56
+ source 'https://rubygems.org'
57
+ ruby '1.9.3'
58
+ gem 'rails', '3.2.7'
59
+ gem 'pg'
60
+ group :development, :test do
61
+ gem 'heroku_san', :path => '../../../.'
62
+ gem 'sqlite3'
63
+ end
64
+ EOT
65
+ end
66
+
67
+ When /^I add heroku_san to the sinatra Gemfile$/ do
68
+ overwrite_file 'Gemfile', <<EOT.strip_heredoc
69
+ source 'https://rubygems.org'
70
+ ruby '1.9.3'
71
+ gem 'sinatra'
56
72
  group :development, :test do
57
73
  gem 'heroku_san', :path => '../../../.'
58
74
  end
@@ -142,7 +158,7 @@ When /^I restart my project$/ do
142
158
  end
143
159
 
144
160
  When /^I generate a scaffold$/ do
145
- run_clean 'rails generate scaffold droid'
161
+ run_clean 'rails generate resource droid'
146
162
  append_to_file 'app/views/droids/index.html.erb', %Q{\n<div><code><%= ENV['DROIDS'] -%></code></div>\n}
147
163
  end
148
164
 
@@ -181,15 +197,13 @@ When /^I install an addon$/ do
181
197
  test_app:
182
198
  app: #{@app}
183
199
  addons:
184
- - deployhooks:campfire
200
+ - scheduler:standard
185
201
 
186
202
  END_CONFIG
187
203
 
188
204
  output = run_clean 'rake test_app heroku:addons'
189
205
  # The output should show the new one ...
190
- assert_partial_output "deployhooks:campfire", output
191
- # ... with a note about needing to configure it.
192
- assert_partial_output "https://api.heroku.com/myapps/#{@app}/addons/deployhooks:campfire", output
206
+ assert_partial_output "scheduler:standard", output
193
207
  end
194
208
 
195
209
  Then /^(?:heroku_san|issue \d+) (?:is green|has been fixed)$/ do
@@ -204,6 +218,7 @@ def vladimir
204
218
  @vladimir ||= begin
205
219
  Godot.new("#{@app}.herokuapp.com", 80).tap do |vladimir|
206
220
  vladimir.timeout = 60
221
+ vladimir.interval = 5
207
222
  end
208
223
  end
209
224
  end
@@ -29,14 +29,6 @@ Gem::Specification.new do |s|
29
29
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
30
30
  s.add_runtime_dependency(%q<heroku-api>, ['>= 0.1.2'])
31
31
  s.add_runtime_dependency(%q<rake>)
32
- s.add_development_dependency(%q<rails>, ['>= 2'])
33
- s.add_development_dependency(%q<rspec>)
34
- s.add_development_dependency(%q<aruba>)
35
- s.add_development_dependency(%q<cucumber>)
36
- s.add_development_dependency(%q<rake>)
37
- s.add_development_dependency(%q<bundler>, ['~> 1.1 '])
38
- s.add_development_dependency('git-smart')
39
- s.add_development_dependency('godot')
40
32
  else
41
33
  s.add_dependency(%q<rails>, ['>= 2'])
42
34
  s.add_dependency(%q<heroku-api>, ['>= 0.1.2'])
@@ -1,3 +1,5 @@
1
+ require 'time'
2
+
1
3
  module HerokuSan
2
4
  class API
3
5
  def initialize(options = {})
@@ -0,0 +1,36 @@
1
+ require 'heroku-api'
2
+
3
+ module HerokuSan
4
+ module Application
5
+ def ensure_one_worker_running(at_least = 1)
6
+ begin
7
+ web_processes = heroku.get_ps(app).body.select { |p| p["process"] =~ /web\./ }
8
+ end until restart_processes(web_processes) >= at_least
9
+ end
10
+
11
+ def ensure_all_workers_running
12
+ while true do
13
+ processes = heroku.get_ps(app).body
14
+
15
+ return if processes.all? { |p| p["state"] == "up" }
16
+
17
+ restart_processes(processes)
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ def restart_processes(web_processes)
24
+ up = 0
25
+ web_processes.each do |process|
26
+ case process["state"]
27
+ when "up"
28
+ up += 1
29
+ when "crashed"
30
+ heroku.post_ps_restart(app, ps: process["process"])
31
+ end
32
+ end
33
+ up
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,5 @@
1
+ require 'yaml'
2
+
1
3
  module HerokuSan
2
4
  class Parser
3
5
  include HerokuSan::Git
@@ -5,8 +7,8 @@ module HerokuSan
5
7
  def parse(parseable)
6
8
  @settings = parse_yaml(parseable.config_file)
7
9
  convert_from_heroku_san_format
8
- each_setting_has_a_config_section
9
10
  parseable.external_configuration = @settings.delete 'config_repo'
11
+ each_setting_has_a_config_section
10
12
  parseable.configuration = @settings
11
13
 
12
14
  end
@@ -1,5 +1,6 @@
1
1
  require 'heroku-api'
2
2
  require 'json'
3
+ require_relative 'application'
3
4
 
4
5
  MOCK = false unless defined?(MOCK)
5
6
 
@@ -8,6 +9,7 @@ module HerokuSan
8
9
  include HerokuSan::Git
9
10
  attr_reader :name
10
11
  attr_reader :options
12
+ include HerokuSan::Application
11
13
 
12
14
  def initialize(stage, options = {})
13
15
  @name = stage
@@ -1,3 +1,3 @@
1
1
  module HerokuSan
2
- VERSION = "4.2.5"
2
+ VERSION = "4.3.0"
3
3
  end
@@ -1,6 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  # https://github.com/fastestforward/heroku_san/issues/105
4
+ module HerokuSan
4
5
  describe HerokuSan::API do
5
6
  subject(:api) { HerokuSan::API.new(:api_key => 'key', :mock => true)}
6
7
  it "is a proxy to the Heroku::API" do
@@ -23,3 +24,4 @@ describe HerokuSan::API do
23
24
  }
24
25
  end
25
26
  end
27
+ end
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+
3
+ module HerokuSan
4
+ describe HerokuSan::Application do
5
+ let(:stage) { HerokuSan::Stage.new('production', {"deploy" => HerokuSan::Deploy::Rails, "app" => "awesomeapp", "stack" => "cedar"}) }
6
+ let(:response) { stub }
7
+
8
+ before do
9
+ stage.heroku.stub(:get_ps).with(stage.app) { response }
10
+ end
11
+
12
+ describe "#ensure_one_worker_running" do
13
+ # API: {"action" => "up", "app_name" => "awesomeapp", "attached" => false, "command" => "thin -p $PORT -e $RACK_ENV -R $HEROKU_RACK start", "elapsed" => 0, "pretty_state" => "created for 0s", "process" => "web.1", "rendezvous_url" => nil, "slug" => "NONE", "state" => "created", "transitioned_at" => "2013/07/28 15:04:24 -0700", "type" => "Dyno", "upid" => "56003928"}
14
+ let(:none_running) do
15
+ [
16
+ {"process" => "worker.1", "state" => "up"},
17
+ {"process" => "web.1", "state" => "starting"},
18
+ {"process" => "web.2", "state" => "starting"}
19
+ ]
20
+ end
21
+ let(:one_running_with_crash) do
22
+ [
23
+ {"process" => "worker.1", "state" => "up"},
24
+ {"process" => "web.1", "state" => "crashed"},
25
+ {"process" => "web.2", "state" => "up"}
26
+ ]
27
+ end
28
+
29
+ it "should block until at least one worker is running, and restart any crashed workers it sees" do
30
+
31
+ with_app(stage, 'name' => stage.app) do |app_data|
32
+ response.should_receive(:body).twice.and_return(none_running, one_running_with_crash)
33
+ stage.heroku.should_receive(:post_ps_restart).with(stage.app, ps: 'web.1')
34
+
35
+ stage.ensure_one_worker_running
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "#ensure_all_workers_running" do
41
+ let(:some_crashes) do
42
+ [
43
+ {"process" => "worker.1", "state" => "crashed"},
44
+ {"process" => "web.1", "state" => "crashed"},
45
+ {"process" => "web.2", "state" => "starting"}
46
+ ]
47
+ end
48
+ let(:some_restarting) do
49
+ [
50
+ {"process" => "worker.1", "state" => "restarting"},
51
+ {"process" => "web.1", "state" => "restarting"},
52
+ {"process" => "web.2", "state" => "up"}
53
+ ]
54
+ end
55
+ let(:one_crash) do
56
+ [
57
+ {"process" => "worker.1", "state" => "crashed"},
58
+ {"process" => "web.1", "state" => "up"},
59
+ {"process" => "web.2", "state" => "up"}
60
+ ]
61
+ end
62
+ let(:all_up) do
63
+ [
64
+ {"process" => "worker.1", "state" => "up"},
65
+ {"process" => "web.1", "state" => "up"},
66
+ {"process" => "web.2", "state" => "up"}
67
+ ]
68
+ end
69
+
70
+ it "should block until all workers are running, and restart any crashed workers it sees" do
71
+ with_app(stage, 'name' => stage.app) do |app_data|
72
+ response.should_receive(:body).exactly(4).times.and_return(some_crashes, some_restarting, one_crash, all_up)
73
+ stage.heroku.should_receive(:post_ps_restart).with(stage.app, ps: 'worker.1').twice
74
+ stage.heroku.should_receive(:post_ps_restart).with(stage.app, ps: 'web.1').once
75
+
76
+ stage.ensure_all_workers_running
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
+ module HerokuSan
3
4
  describe HerokuSan::Configuration do
4
5
  let(:configurable) { Configurable.new }
5
6
  let(:configuration) { HerokuSan::Configuration.new(configurable) }
@@ -38,4 +39,5 @@ describe HerokuSan::Configuration do
38
39
  end
39
40
  end
40
41
  end
41
- end
42
+ end
43
+ end
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
+ module HerokuSan
3
4
  describe HerokuSan::Parser do
4
5
  let(:parser) { subject }
5
6
 
@@ -86,3 +87,4 @@ describe HerokuSan::Parser do
86
87
  end
87
88
  end
88
89
  end
90
+ end
@@ -1,6 +1,7 @@
1
1
  require 'spec_helper'
2
2
  require 'tmpdir'
3
3
 
4
+ module HerokuSan
4
5
  describe HerokuSan::Project do
5
6
  let(:heroku_san) { HerokuSan::Project.new }
6
7
  subject { heroku_san }
@@ -82,3 +83,4 @@ describe HerokuSan::Project do
82
83
  end
83
84
  end
84
85
  end
86
+ end
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
+ module HerokuSan
3
4
  describe HerokuSan::Stage do
4
5
  include HerokuSan::Git
5
6
  subject { HerokuSan::Stage.new('production', {"deploy" => HerokuSan::Deploy::Rails, "app" => "awesomeapp", "stack" => "cedar"})}
@@ -282,3 +283,4 @@ describe HerokuSan::Stage do
282
283
  end
283
284
  end
284
285
  end
286
+ end
@@ -10,13 +10,6 @@ MOCK = ENV['MOCK'] != 'false'
10
10
  Dir[File.join(SPEC_ROOT, "support/**/*.rb")].each {|f| require f}
11
11
 
12
12
  RSpec.configure do |config|
13
- # == Mock Framework
14
- #
15
- # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
16
- #
17
- # config.mock_with :mocha
18
- # config.mock_with :flexmock
19
- # config.mock_with :rr
20
13
  config.mock_with :rspec
21
14
  end
22
15
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku_san
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.5
4
+ version: 4.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-02-12 00:00:00.000000000 Z
15
+ date: 2013-07-29 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: heroku-api
@@ -46,134 +46,6 @@ dependencies:
46
46
  - - ! '>='
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
- - !ruby/object:Gem::Dependency
50
- name: rails
51
- requirement: !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ! '>='
55
- - !ruby/object:Gem::Version
56
- version: '2'
57
- type: :development
58
- prerelease: false
59
- version_requirements: !ruby/object:Gem::Requirement
60
- none: false
61
- requirements:
62
- - - ! '>='
63
- - !ruby/object:Gem::Version
64
- version: '2'
65
- - !ruby/object:Gem::Dependency
66
- name: rspec
67
- requirement: !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ! '>='
71
- - !ruby/object:Gem::Version
72
- version: '0'
73
- type: :development
74
- 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
82
- name: aruba
83
- requirement: !ruby/object:Gem::Requirement
84
- none: false
85
- requirements:
86
- - - ! '>='
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- type: :development
90
- 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: cucumber
99
- requirement: !ruby/object:Gem::Requirement
100
- none: false
101
- requirements:
102
- - - ! '>='
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- none: false
109
- requirements:
110
- - - ! '>='
111
- - !ruby/object:Gem::Version
112
- version: '0'
113
- - !ruby/object:Gem::Dependency
114
- name: rake
115
- requirement: !ruby/object:Gem::Requirement
116
- none: false
117
- requirements:
118
- - - ! '>='
119
- - !ruby/object:Gem::Version
120
- version: '0'
121
- type: :development
122
- 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
130
- name: bundler
131
- requirement: !ruby/object:Gem::Requirement
132
- none: false
133
- requirements:
134
- - - ~>
135
- - !ruby/object:Gem::Version
136
- version: '1.1'
137
- type: :development
138
- prerelease: false
139
- version_requirements: !ruby/object:Gem::Requirement
140
- none: false
141
- requirements:
142
- - - ~>
143
- - !ruby/object:Gem::Version
144
- version: '1.1'
145
- - !ruby/object:Gem::Dependency
146
- name: git-smart
147
- requirement: !ruby/object:Gem::Requirement
148
- none: false
149
- requirements:
150
- - - ! '>='
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- type: :development
154
- prerelease: false
155
- version_requirements: !ruby/object:Gem::Requirement
156
- none: false
157
- requirements:
158
- - - ! '>='
159
- - !ruby/object:Gem::Version
160
- version: '0'
161
- - !ruby/object:Gem::Dependency
162
- name: godot
163
- requirement: !ruby/object:Gem::Requirement
164
- none: false
165
- requirements:
166
- - - ! '>='
167
- - !ruby/object:Gem::Version
168
- version: '0'
169
- type: :development
170
- prerelease: false
171
- version_requirements: !ruby/object:Gem::Requirement
172
- none: false
173
- requirements:
174
- - - ! '>='
175
- - !ruby/object:Gem::Version
176
- version: '0'
177
49
  description: Manage multiple Heroku instances/apps for a single Rails app using Rake
178
50
  email: elijah.miller@gmail.com
179
51
  executables: []
@@ -182,9 +54,12 @@ extra_rdoc_files:
182
54
  - README.md
183
55
  files:
184
56
  - .gitignore
57
+ - .ruby-gemset
58
+ - .ruby-version
185
59
  - .travis.yml
186
60
  - CHANGELOG.md
187
61
  - Gemfile
62
+ - Guardfile
188
63
  - LICENSE
189
64
  - README.md
190
65
  - Rakefile
@@ -202,6 +77,7 @@ files:
202
77
  - lib/generators/heroku_san_generator.rb
203
78
  - lib/heroku_san.rb
204
79
  - lib/heroku_san/api.rb
80
+ - lib/heroku_san/application.rb
205
81
  - lib/heroku_san/configuration.rb
206
82
  - lib/heroku_san/deploy/base.rb
207
83
  - lib/heroku_san/deploy/noop.rb
@@ -219,11 +95,12 @@ files:
219
95
  - spec/fixtures/example.yml
220
96
  - spec/fixtures/extended_config.yml
221
97
  - spec/fixtures/old_format.yml
222
- - spec/git_spec.rb
223
98
  - spec/heroku_san/api_spec.rb
99
+ - spec/heroku_san/application_spec.rb
224
100
  - spec/heroku_san/configuration_spec.rb
225
101
  - spec/heroku_san/deploy/base_spec.rb
226
102
  - spec/heroku_san/deploy/rails_spec.rb
103
+ - spec/heroku_san/git_spec.rb
227
104
  - spec/heroku_san/parser_spec.rb
228
105
  - spec/heroku_san/project_spec.rb
229
106
  - spec/heroku_san/stage_spec.rb
@@ -245,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
245
122
  version: '0'
246
123
  segments:
247
124
  - 0
248
- hash: 4414701449810336455
125
+ hash: -1774718932546341856
249
126
  required_rubygems_version: !ruby/object:Gem::Requirement
250
127
  none: false
251
128
  requirements:
@@ -254,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
131
  version: '0'
255
132
  requirements: []
256
133
  rubyforge_project:
257
- rubygems_version: 1.8.24
134
+ rubygems_version: 1.8.23
258
135
  signing_key:
259
136
  specification_version: 3
260
137
  summary: ! 'A bunch of useful Rake tasks for managing your Heroku apps. NOTE: The
@@ -269,11 +146,12 @@ test_files:
269
146
  - spec/fixtures/example.yml
270
147
  - spec/fixtures/extended_config.yml
271
148
  - spec/fixtures/old_format.yml
272
- - spec/git_spec.rb
273
149
  - spec/heroku_san/api_spec.rb
150
+ - spec/heroku_san/application_spec.rb
274
151
  - spec/heroku_san/configuration_spec.rb
275
152
  - spec/heroku_san/deploy/base_spec.rb
276
153
  - spec/heroku_san/deploy/rails_spec.rb
154
+ - spec/heroku_san/git_spec.rb
277
155
  - spec/heroku_san/parser_spec.rb
278
156
  - spec/heroku_san/project_spec.rb
279
157
  - spec/heroku_san/stage_spec.rb