heroku_san 4.3.2 → 4.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3a9578dfc90a0553a24f7ec7ee3059d872b6ab98
4
+ data.tar.gz: 3267d16a4619e35fd9109ede728c98dcd75b6d4b
5
+ SHA512:
6
+ metadata.gz: 232012170dde11b1fdb6399d9d036a2aec44517182fbb2a77f49bad94c7b5a1361057fe7d1458bca2c9bffa4bef7b7140d848b224063dc8eb7e67554d5e0e0f5
7
+ data.tar.gz: 00c8e215b7c4fb746e6b8e2d3efb58e86eea8be063704a302b4ee06dba2f01d26096d0b84fe4fc562c6df849daf4136676459dfa52bbb9e62196802a5dd5197d
@@ -1 +1 @@
1
- ruby-1.9.3-p327
1
+ 2.2.4
@@ -2,9 +2,10 @@ language: ruby
2
2
  bundler_args: --without development
3
3
  script: "bundle exec rake travis"
4
4
  rvm:
5
- - 1.9.2
6
- - 1.9.3
7
- - 2.0.0
5
+ - 2.0
6
+ - 2.1
7
+ - 2.2
8
+ - 2.3
8
9
  env:
9
10
  global:
10
11
  - secure: dAxfEdg/7Cb/G9vkrn/ifdvycbXWtK2ey60JMepOxx9v3QyaqoSY3w5G0QB+4+uyOYmHwtif8tnK3Sa8jbBgqhAlXaxqxOT8WmQKYlhSgwWX4lQe4lUM5jkOkfNHRMRaQvCAn27gNAjdIRU7sb2cU/pm64eAFbU01TejJOM7Aow=
@@ -1,5 +1,10 @@
1
1
  # Change Log (curated)
2
2
 
3
+ # The Future
4
+
5
+ * [https://github.com/fastestforward/heroku_san/releases](https://github.com/fastestforward/heroku_san/releases)
6
+ * GitHub releases pages will replace the ChangeLog
7
+
3
8
  ## v4.3.0
4
9
 
5
10
  * Add #ensure_{all|one}_worker(s)_running -- which will restart your web workers until they stay up
data/Gemfile CHANGED
@@ -5,25 +5,17 @@ gemspec
5
5
 
6
6
  group :test do
7
7
  gem 'aruba'
8
- gem 'bundler', '~> 1.1'
8
+ gem 'bundler'
9
9
  gem 'cucumber'
10
10
  gem 'godot'
11
- gem 'rails', '3.2.7'
11
+ gem 'rails'
12
12
  gem 'rake'
13
- gem 'rspec', '~> 2.14'
13
+ gem 'rspec'
14
14
  gem 'sqlite3'
15
15
  gem 'pg'
16
16
  end
17
17
 
18
18
  group :development do
19
19
  gem 'git-smart'
20
- gem 'guard'
21
- gem 'guard-bundler'
22
- gem 'guard-cucumber'
23
- gem 'guard-rspec'
24
- gem 'rb-fchange', :require => false
25
- gem 'rb-fsevent', :require => false
26
- gem 'rb-inotify', :require => false
27
- gem 'terminal-notifier-guard'
28
20
  gem 'travis', '~> 1.5.6'
29
21
  end
data/README.md CHANGED
@@ -3,10 +3,11 @@ 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
5
  [![Code Climate](https://codeclimate.com/github/fastestforward/heroku_san.png)](https://codeclimate.com/github/fastestforward/heroku_san)
6
+ [![Gemnasium](https://gemnasium.com/fastestforward/heroku_san.png)](https://gemnasium.com/fastestforward/heroku_san)
6
7
 
7
8
  ## Install
8
9
 
9
- ### Rails 3
10
+ ### Rails 3+
10
11
 
11
12
  Add this to your `Gemfile`:
12
13
 
@@ -62,7 +63,7 @@ Update your `Rakefile`:
62
63
 
63
64
  In `config/heroku.yml` you will need to add the Heroku apps that you would like to attach to this project. You can generate this file by running:
64
65
 
65
- ### Rails 3
66
+ ### Rails 3+
66
67
 
67
68
  ```sh
68
69
  rails generate heroku_san
@@ -1,13 +1,13 @@
1
1
  @slow_process @announce-cmd
2
2
  Feature: heroku_san can shell out to heroku without errors
3
3
 
4
- Scenario: Bundling a ruby 2.0 project
4
+ Scenario: Bundling a ruby 2.2.4 project
5
5
  Given I run `mkdir -p ruby2test`
6
6
  And I cd to "ruby2test"
7
7
  And I write to "Gemfile" with:
8
8
  """
9
9
  source "https://rubygems.org"
10
- ruby '2.0.0'
10
+ ruby '2.2.4'
11
11
  gem 'heroku_san', :path => '../../../.'
12
12
  """
13
13
 
@@ -31,9 +31,7 @@ Feature: heroku_san can shell out to heroku without errors
31
31
  """
32
32
  #!/usr/bin/env bash
33
33
 
34
- [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
35
-
36
- rvm use 2.0.0
34
+ rbenv local 2.2.4
37
35
  bundle install
38
36
 
39
37
  ruby get_heroku_version.rb
@@ -55,7 +55,7 @@ When /^I add heroku_san to the rails Gemfile$/ do
55
55
  overwrite_file 'Gemfile', <<EOT.strip_heredoc
56
56
  source 'https://rubygems.org'
57
57
  ruby '#{ruby_version}'
58
- gem 'rails', '3.2.7'
58
+ gem 'rails', '4.2.6'
59
59
  gem 'pg'
60
60
  group :development, :test do
61
61
  gem 'heroku_san', :path => '../../../.'
@@ -177,12 +177,12 @@ end
177
177
 
178
178
  When /^I deploy my project$/ do
179
179
  run_clean 'rake test_app deploy'
180
- assert_partial_output "http://#{@app}.herokuapp.com deployed to Heroku", all_output
180
+ assert_partial_output "https://#{@app}.herokuapp.com/ deployed to Heroku", all_output
181
181
  end
182
182
 
183
183
  When /^I deploy to tag "([^"]*)"$/ do |tag|
184
184
  run_clean "rake test_app deploy[#{tag}]"
185
- assert_partial_output "http://#{@app}.herokuapp.com deployed to Heroku", all_output
185
+ assert_partial_output "https://#{@app}.herokuapp.com/ deployed to Heroku", all_output
186
186
  end
187
187
 
188
188
  When /^I list all apps on Heroku$/ do
@@ -196,18 +196,17 @@ When /^I list all apps on Heroku$/ do
196
196
  end
197
197
 
198
198
  When /^I install an addon$/ do
199
- # Install the campfire addon.
200
199
  overwrite_file 'config/heroku.yml', <<END_CONFIG.strip_heredoc
201
200
  test_app:
202
201
  app: #{@app}
203
202
  addons:
204
- - heroku-postgresql:dev
203
+ - heroku-postgresql:hobby-dev
205
204
 
206
205
  END_CONFIG
207
206
 
208
207
  output = run_clean 'rake test_app heroku:addons'
209
208
  # The output should show the new one ...
210
- assert_partial_output "heroku-postgresql:dev", output
209
+ assert_partial_output "heroku-postgresql:hobby-dev", output
211
210
  end
212
211
 
213
212
  Then /^(?:heroku_san|issue \d+) (?:is green|has been fixed)$/ do
@@ -236,5 +235,5 @@ EOT
236
235
  end
237
236
 
238
237
  def ruby_version
239
- ENV['TRAVIS_RUBY_VERSION'] || '1.9.3'
238
+ ENV['TRAVIS_RUBY_VERSION'] || '2.2.4'
240
239
  end
@@ -9,7 +9,7 @@ module HerokuSan
9
9
  def sh(app, *command)
10
10
  preflight_check_for_cli
11
11
 
12
- cmd = (command + ['--app', app]).compact
12
+ cmd = (command + ['--app', app, "--exit-code"]).compact
13
13
 
14
14
  show_command = cmd.join(' ')
15
15
  $stderr.puts show_command if @debug
@@ -1,3 +1,3 @@
1
1
  module HerokuSan
2
- VERSION = "4.3.2"
2
+ VERSION = "4.4.0"
3
3
  end
@@ -5,22 +5,22 @@ module HerokuSan
5
5
  describe HerokuSan::API do
6
6
  subject(:api) { HerokuSan::API.new(:api_key => 'key', :double => true)}
7
7
  it "is a proxy to the Heroku::API" do
8
- Heroku::API.any_instance.should_receive(:api_method).with(1, 2, {:arg => 3}) {true}
9
- api.api_method(1, 2, {:arg => 3}).should be_true
8
+ expect_any_instance_of(Heroku::API).to receive(:api_method).with(1, 2, {:arg => 3}) {true}
9
+ expect(api.api_method(1, 2, {:arg => 3})).to be_truthy
10
10
  end
11
11
 
12
12
  it "reports Excon errors in a more human readable format" do
13
13
  error_message = 'Name is already taken'
14
14
  status_message = '000 Status'
15
15
  response = double("Response", :body => %Q[{"error":"#{error_message}"}], :headers => {'Status' => status_message})
16
- Heroku::API.any_instance.should_receive(:api_method).and_raise(Heroku::API::Errors::ErrorWithResponse.new("excon message", response))
16
+ expect_any_instance_of(Heroku::API).to receive(:api_method).and_raise(Heroku::API::Errors::ErrorWithResponse.new("excon message", response))
17
17
 
18
- $stderr.should_receive(:puts).with("\nHeroku API ERROR: #{status_message} (#{error_message})\n\n")
18
+ expect($stderr).to receive(:puts).with("\nHeroku API ERROR: #{status_message} (#{error_message})\n\n")
19
19
 
20
20
  expect {
21
21
  api.api_method
22
22
  }.to raise_error(Heroku::API::Errors::ErrorWithResponse, "excon message") {|error|
23
- error.backtrace.should == []
23
+ expect(error.backtrace).to eq []
24
24
  }
25
25
  end
26
26
  end
@@ -6,7 +6,7 @@ module HerokuSan
6
6
  let(:response) { double }
7
7
 
8
8
  before do
9
- stage.heroku.stub(:get_ps).with(stage.app) { response }
9
+ allow(stage.heroku).to receive(:get_ps).with(stage.app) { response }
10
10
  end
11
11
 
12
12
  describe "#ensure_one_worker_running" do
@@ -29,8 +29,8 @@ module HerokuSan
29
29
  it "should block until at least one worker is running, and restart any crashed workers it sees" do
30
30
 
31
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')
32
+ expect(response).to receive(:body).twice.and_return(none_running, one_running_with_crash)
33
+ expect(stage.heroku).to receive(:post_ps_restart).with(stage.app, ps: 'web.1')
34
34
 
35
35
  stage.ensure_one_worker_running
36
36
  end
@@ -69,9 +69,9 @@ module HerokuSan
69
69
 
70
70
  it "should block until all workers are running, and restart any crashed workers it sees" do
71
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
72
+ expect(response).to receive(:body).exactly(4).times.and_return(some_crashes, some_restarting, one_crash, all_up)
73
+ expect(stage.heroku).to receive(:post_ps_restart).with(stage.app, ps: 'worker.1').twice
74
+ expect(stage.heroku).to receive(:post_ps_restart).with(stage.app, ps: 'web.1').once
75
75
 
76
76
  stage.ensure_all_workers_running
77
77
  end
@@ -8,17 +8,17 @@ describe HerokuSan::Configuration do
8
8
  describe "#stages" do
9
9
  it "creates a configuration hash" do
10
10
  configuration.configuration = {'production' => {}}
11
- configuration.stages.should == {
11
+ expect(configuration.stages).to eq(
12
12
  'production' => Factory::Stage.build('production', 'deploy' => HerokuSan::Deploy::Rails)
13
- }
13
+ )
14
14
  end
15
15
 
16
16
  it "configures the deploy strategy" do
17
17
  configurable.options = {'deploy' => HerokuSan::Deploy::Base}
18
18
  configuration.configuration = {'production' => {}}
19
- configuration.stages.should == {
19
+ expect(configuration.stages).to eq(
20
20
  'production' => Factory::Stage.build('production', 'deploy' => HerokuSan::Deploy::Base)
21
- }
21
+ )
22
22
  end
23
23
  end
24
24
 
@@ -27,15 +27,15 @@ describe HerokuSan::Configuration do
27
27
  it "creates a new file using the example file" do
28
28
  Dir.mktmpdir do |dir|
29
29
  configurable.config_file = tmp_config_file = File.join(dir, 'config.yml')
30
- FileUtils.should_receive(:cp).with(configuration.template, tmp_config_file)
31
- configuration.generate_config.should be_true
30
+ expect(FileUtils).to receive(:cp).with(configuration.template, tmp_config_file)
31
+ expect(configuration.generate_config).to be_truthy
32
32
  end
33
33
  end
34
34
 
35
35
  it "does not overwrite an existing file" do
36
- FileUtils.should_not_receive(:cp)
36
+ expect(FileUtils).not_to receive(:cp)
37
37
  configurable.config_file = fixture("example.yml")
38
- configuration.generate_config.should be_false
38
+ expect(configuration.generate_config).to be_falsey
39
39
  end
40
40
  end
41
41
  end
@@ -7,25 +7,25 @@ module HerokuSan
7
7
 
8
8
  it "calls push" do
9
9
  subject = described_class.new(stage)
10
- stage.should_receive(:push).with(nil, nil)
10
+ expect(stage).to receive(:push).with(nil, nil)
11
11
  subject.deploy
12
12
  end
13
13
 
14
14
  it "calls push(sha)" do
15
15
  subject = described_class.new(stage, 'sha')
16
- stage.should_receive(:push).with('sha', nil)
16
+ expect(stage).to receive(:push).with('sha', nil)
17
17
  subject.deploy
18
18
  end
19
19
 
20
20
  it "calls push(nil, :force)" do
21
21
  subject = described_class.new(stage, nil, :force)
22
- stage.should_receive(:push).with(nil, :force)
22
+ expect(stage).to receive(:push).with(nil, :force)
23
23
  subject.deploy
24
24
  end
25
25
 
26
26
  it "calls push(sha, :force)" do
27
27
  subject = described_class.new(stage, 'sha', :force)
28
- stage.should_receive(:push).with('sha', :force)
28
+ expect(stage).to receive(:push).with('sha', :force)
29
29
  subject.deploy
30
30
  end
31
31
  end
@@ -7,9 +7,9 @@ module HerokuSan
7
7
 
8
8
  it "calls push, rake db:migrate & restart" do
9
9
  subject = described_class.new(stage, {})
10
- stage.should_receive(:push) { "pushed" } # "mock" super
11
- stage.should_receive(:run).with('rake db:migrate') { "migrated" }
12
- stage.should_receive(:restart) { "restarted" }
10
+ expect(stage).to receive(:push) { "pushed" } # "mock" super
11
+ expect(stage).to receive(:run).with('rake db:migrate') { "migrated" }
12
+ expect(stage).to receive(:restart) { "restarted" }
13
13
  subject.deploy
14
14
  end
15
15
  end
@@ -6,81 +6,81 @@ class GitTest; include HerokuSan::Git; end
6
6
  describe GitTest do
7
7
  describe "#git_push" do
8
8
  it "pushes to heroku" do
9
- subject.should_receive(:sh).with("git update-ref refs/heroku_san/deploy HEAD^{commit}")
10
- subject.should_receive(:sh).with("git push git@heroku.com:awesomeapp.git refs/heroku_san/deploy:refs/heads/master")
11
- subject.should_receive(:sh).with("git update-ref -d refs/heroku_san/deploy")
9
+ expect(subject).to receive(:sh).with("git update-ref refs/heroku_san/deploy HEAD^{commit}")
10
+ expect(subject).to receive(:sh).with("git push git@heroku.com:awesomeapp.git refs/heroku_san/deploy:refs/heads/master")
11
+ expect(subject).to receive(:sh).with("git update-ref -d refs/heroku_san/deploy")
12
12
  subject.git_push(nil, 'git@heroku.com:awesomeapp.git')
13
13
  end
14
14
 
15
15
  it "pushes a specific commit to heroku" do
16
- subject.should_receive(:sh).with("git update-ref refs/heroku_san/deploy kommit^{commit}")
17
- subject.should_receive(:sh).with("git push git@heroku.com:awesomeapp.git refs/heroku_san/deploy:refs/heads/master")
18
- subject.should_receive(:sh).with("git update-ref -d refs/heroku_san/deploy")
16
+ expect(subject).to receive(:sh).with("git update-ref refs/heroku_san/deploy kommit^{commit}")
17
+ expect(subject).to receive(:sh).with("git push git@heroku.com:awesomeapp.git refs/heroku_san/deploy:refs/heads/master")
18
+ expect(subject).to receive(:sh).with("git update-ref -d refs/heroku_san/deploy")
19
19
  subject.git_push('kommit', 'git@heroku.com:awesomeapp.git')
20
20
  end
21
21
 
22
22
  it "includes options, too" do
23
- subject.should_receive(:sh).with("git update-ref refs/heroku_san/deploy HEAD^{commit}")
24
- subject.should_receive(:sh).with("git push git@heroku.com:awesomeapp.git --force -v refs/heroku_san/deploy:refs/heads/master")
25
- subject.should_receive(:sh).with("git update-ref -d refs/heroku_san/deploy")
23
+ expect(subject).to receive(:sh).with("git update-ref refs/heroku_san/deploy HEAD^{commit}")
24
+ expect(subject).to receive(:sh).with("git push git@heroku.com:awesomeapp.git --force -v refs/heroku_san/deploy:refs/heads/master")
25
+ expect(subject).to receive(:sh).with("git update-ref -d refs/heroku_san/deploy")
26
26
  subject.git_push(nil, 'git@heroku.com:awesomeapp.git', %w[--force -v])
27
27
  end
28
28
 
29
29
  it "propagates any errors, but still cleans up" do
30
- subject.should_receive(:sh).with("git update-ref refs/heroku_san/deploy HEAD^{commit}")
31
- subject.should_receive(:sh).with("git push git@heroku.com:awesomeapp.git refs/heroku_san/deploy:refs/heads/master").and_raise
32
- subject.should_receive(:sh).with("git update-ref -d refs/heroku_san/deploy")
33
- expect { subject.git_push(nil, 'git@heroku.com:awesomeapp.git') }.to raise_error
30
+ expect(subject).to receive(:sh).with("git update-ref refs/heroku_san/deploy HEAD^{commit}")
31
+ expect(subject).to receive(:sh).with("git push git@heroku.com:awesomeapp.git refs/heroku_san/deploy:refs/heads/master").and_raise
32
+ expect(subject).to receive(:sh).with("git update-ref -d refs/heroku_san/deploy")
33
+ expect { subject.git_push(nil, 'git@heroku.com:awesomeapp.git') }.to raise_error StandardError
34
34
  end
35
35
  end
36
36
 
37
37
  describe "#git_tag" do
38
38
  it "returns the latest tag that matches the pattern" do
39
- subject.should_receive("`").with("git tag -l 'pattern*'") { "x\n\y\n\z\n" }
40
- subject.git_tag('pattern*').should == "z"
39
+ expect(subject).to receive("`").with("git tag -l 'pattern*'") { "x\n\y\n\z\n" }
40
+ expect(subject.git_tag('pattern*')).to eq "z"
41
41
  end
42
42
 
43
43
  it "raises exception if no tags match the pattern" do
44
- subject.should_receive("`").with("git tag -l 'pattern*'") { "\n" }
44
+ expect(subject).to receive("`").with("git tag -l 'pattern*'") { "\n" }
45
45
  expect {
46
46
  subject.git_tag('pattern*')
47
47
  }.to raise_error(HerokuSan::Git::NoTagFoundError)
48
48
  end
49
49
 
50
50
  it "returns nil for a nil glob" do
51
- subject.should_not_receive("`").with("git tag -l ''") { "\n" }
52
- subject.git_tag(nil).should == nil
51
+ expect(subject).not_to receive("`").with("git tag -l ''") { "\n" }
52
+ expect(subject.git_tag(nil)).to be_nil
53
53
  end
54
54
  end
55
55
 
56
56
  describe "#git_rev_parse" do
57
57
  it "returns the rev based on the tag" do
58
- subject.should_receive("`").with("git rev-parse prod/1234567890") { "sha\n" }
59
- subject.git_rev_parse('prod/1234567890').should == "sha"
58
+ expect(subject).to receive("`").with("git rev-parse prod/1234567890") { "sha\n" }
59
+ expect(subject.git_rev_parse('prod/1234567890')).to eq "sha"
60
60
  end
61
61
 
62
62
  it "returns nil for a blank tag" do
63
- subject.should_not_receive("`").with("git rev-parse ") { "\n" }
64
- subject.git_rev_parse(nil).should == nil
63
+ expect(subject).not_to receive("`").with("git rev-parse ") { "\n" }
64
+ expect(subject.git_rev_parse(nil)).to be_nil
65
65
  end
66
66
  end
67
67
 
68
68
  describe "#git_revision" do
69
69
  it "returns the current revision of the repository (on Heroku)" do
70
- subject.should_receive("`").with("git ls-remote --heads staging master") { "sha\n" }
71
- subject.git_revision('staging').should == 'sha'
70
+ expect(subject).to receive("`").with("git ls-remote --heads staging master") { "sha\n" }
71
+ expect(subject.git_revision('staging')).to eq 'sha'
72
72
  end
73
73
 
74
74
  it "returns nil if there is no revision (i.e. not deployed yet)" do
75
- subject.should_receive("`").with("git ls-remote --heads staging master") { "\n" }
76
- subject.git_revision('staging').should == nil
75
+ expect(subject).to receive("`").with("git ls-remote --heads staging master") { "\n" }
76
+ expect(subject.git_revision('staging')).to be_nil
77
77
  end
78
78
  end
79
79
 
80
80
  describe "#git_named_rev" do
81
81
  it "returns symbolic names for given rev" do
82
- subject.should_receive("`").with("git name-rev sha") {"sha production/123456\n"}
83
- subject.git_named_rev('sha').should == 'sha production/123456'
82
+ expect(subject).to receive("`").with("git name-rev sha") {"sha production/123456\n"}
83
+ expect(subject.git_named_rev('sha')).to eq 'sha production/123456'
84
84
  end
85
85
  end
86
86
  end
@@ -11,10 +11,10 @@ describe HerokuSan::Parser do
11
11
  it "returns a list of apps" do
12
12
  parser.parse(parseable)
13
13
 
14
- parseable.configuration.keys.should =~ %w[production staging demo]
15
- parseable.configuration['production'].should == {'app' => 'awesomeapp', 'tag' => 'production/*', 'config' => {'BUNDLE_WITHOUT' => 'development:test', 'GOOGLE_ANALYTICS' => 'UA-12345678-1'}}
16
- parseable.configuration['staging'].should == {'app' => 'awesomeapp-staging', 'stack' => 'bamboo-ree-1.8.7', 'config' => {'BUNDLE_WITHOUT' => 'development:test'}}
17
- parseable.configuration['demo'].should == {'app' => 'awesomeapp-demo', 'stack' => 'cedar', 'config' => {'BUNDLE_WITHOUT' => 'development:test'}}
14
+ expect(parseable.configuration.keys).to match %w[production staging demo]
15
+ expect(parseable.configuration['production']).to eq({'app' => 'awesomeapp', 'tag' => 'production/*', 'config' => {'BUNDLE_WITHOUT' => 'development:test', 'GOOGLE_ANALYTICS' => 'UA-12345678-1'}})
16
+ expect(parseable.configuration['staging']).to eq({'app' => 'awesomeapp-staging', 'stack' => 'bamboo-ree-1.8.7', 'config' => {'BUNDLE_WITHOUT' => 'development:test'}})
17
+ expect(parseable.configuration['demo']).to eq({'app' => 'awesomeapp-demo', 'stack' => 'cedar', 'config' => {'BUNDLE_WITHOUT' => 'development:test'}})
18
18
  end
19
19
  end
20
20
 
@@ -24,12 +24,12 @@ describe HerokuSan::Parser do
24
24
  it "returns a list of apps" do
25
25
  parser.parse(parseable)
26
26
 
27
- parseable.configuration.keys.should =~ %w[production staging demo]
28
- parseable.configuration.should == {
27
+ expect(parseable.configuration.keys).to match %w[production staging demo]
28
+ expect(parseable.configuration).to eq({
29
29
  'production' => {'app' => 'awesomeapp', 'config' => {}},
30
30
  'staging' => {'app' => 'awesomeapp-staging', 'config' => {}},
31
31
  'demo' => {'app' => 'awesomeapp-demo', 'config' => {}}
32
- }
32
+ })
33
33
  end
34
34
  end
35
35
  end
@@ -63,7 +63,7 @@ describe HerokuSan::Parser do
63
63
  let(:parseable) { double :external_configuration => nil }
64
64
 
65
65
  it "doesn't change prod_config" do
66
- prod_config.should_not_receive :merge!
66
+ expect(prod_config).not_to receive :merge!
67
67
  parser.merge_external_config! parseable, stages
68
68
  end
69
69
  end
@@ -71,18 +71,18 @@ describe HerokuSan::Parser do
71
71
  context "with extra" do
72
72
  let(:parseable) { double :external_configuration => 'config_repos' }
73
73
  before(:each) do
74
- parser.should_receive(:git_clone).with('config_repos', anything)
75
- parser.should_receive(:parse_yaml).and_return(extras)
74
+ expect(parser).to receive(:git_clone).with('config_repos', anything)
75
+ expect(parser).to receive(:parse_yaml).and_return(extras)
76
76
  end
77
77
 
78
78
  it "merges extra configuration bits" do
79
- prod_config.should_receive(:merge!).with extras['production']
79
+ expect(prod_config).to receive(:merge!).with extras['production']
80
80
  parser.merge_external_config! parseable, [stages.first]
81
81
  end
82
82
 
83
83
  it "overrides the main configuration" do
84
84
  parser.merge_external_config! parseable, [stages.last]
85
- staging_config.should == {"EXTRA" => "foo"}
85
+ expect(staging_config).to eq("EXTRA" => "foo")
86
86
  end
87
87
  end
88
88
  end
@@ -14,32 +14,32 @@ describe HerokuSan::Project do
14
14
 
15
15
  describe "#apps constructs the deploy list" do
16
16
  it "appends known shorthands to apps" do
17
- heroku_san.apps.should == []
17
+ expect(heroku_san.apps).to eq []
18
18
  heroku_san << 'production'
19
- heroku_san.apps.should == %w[production]
19
+ expect(heroku_san.apps).to eq %w[production]
20
20
  heroku_san << 'staging'
21
- heroku_san.apps.should == %w[production staging]
21
+ expect(heroku_san.apps).to eq %w[production staging]
22
22
  heroku_san << 'unknown'
23
- heroku_san.apps.should == %w[production staging]
23
+ expect(heroku_san.apps).to eq %w[production staging]
24
24
  end
25
25
 
26
26
  it "appends .all (or any array)" do
27
27
  heroku_san << heroku_san.all
28
- heroku_san.apps.should == heroku_san.all
28
+ expect(heroku_san.apps).to eq heroku_san.all
29
29
  end
30
30
 
31
31
  describe "extra (default) behaviors" do
32
32
  specify "on a git branch that matches an app name" do
33
- heroku_san.should_receive(:git_active_branch) { "staging" }
34
- $stdout.should_receive(:puts).with("Defaulting to 'staging' as it matches the current branch")
33
+ expect(heroku_san).to receive(:git_active_branch) { "staging" }
34
+ expect($stdout).to receive(:puts).with("Defaulting to 'staging' as it matches the current branch")
35
35
  expect {
36
- heroku_san.apps.should == %w[staging]
36
+ expect(heroku_san.apps).to eq %w[staging]
37
37
  }.to change{heroku_san.instance_variable_get('@apps')}.from([]).to(%w[staging])
38
38
  end
39
-
39
+
40
40
  specify "on a git branch that doesn't matches an app name" do
41
- heroku_san.should_receive(:git_active_branch) { "master" }
42
- heroku_san.apps.should == %w[]
41
+ expect(heroku_san).to receive(:git_active_branch) { "master" }
42
+ expect(heroku_san.apps).to eq %w[]
43
43
  end
44
44
 
45
45
  context "with only a single configured app" do
@@ -51,9 +51,9 @@ describe HerokuSan::Project do
51
51
  end
52
52
 
53
53
  it "returns the app" do
54
- $stdout.should_receive(:puts).with('Defaulting to "production" since only one app is defined')
54
+ expect($stdout).to receive(:puts).with('Defaulting to "production" since only one app is defined')
55
55
  expect {
56
- heroku_san.apps.should == %w[production]
56
+ expect(heroku_san.apps).to eq %w[production]
57
57
  }.to change{heroku_san.instance_variable_get('@apps')}.from([]).to(%w[production])
58
58
  end
59
59
  end
@@ -68,7 +68,7 @@ describe HerokuSan::Project do
68
68
  it "yields to a block with args" do
69
69
  heroku_san << 'production'
70
70
  block = double('block')
71
- block.should_receive(:action).with(heroku_san['production'])
71
+ expect(block).to receive(:action).with(heroku_san['production'])
72
72
  heroku_san.each_app do |stage|
73
73
  block.action(stage)
74
74
  end
@@ -78,7 +78,7 @@ describe HerokuSan::Project do
78
78
  describe "#[]" do
79
79
  it "returns a config section" do
80
80
  heroku_san.all.each do |app|
81
- heroku_san[app].should be_a HerokuSan::Stage
81
+ expect(heroku_san[app]).to be_a HerokuSan::Stage
82
82
  end
83
83
  end
84
84
  end
@@ -7,7 +7,7 @@ describe HerokuSan::Stage do
7
7
  include HerokuSan::Git
8
8
  subject { Factory::Stage.build('production', {"deploy" => HerokuSan::Deploy::Rails, "app" => "awesomeapp", "stack" => "cedar"})}
9
9
  before do
10
- HerokuSan::API.any_instance.stub(:preflight_check_for_cli)
10
+ allow_any_instance_of(HerokuSan::API).to receive(:preflight_check_for_cli)
11
11
  end
12
12
 
13
13
  context "initializes" do
@@ -19,17 +19,17 @@ describe HerokuSan::Stage do
19
19
  "addons"=> ['one:addon', 'two:addons']
20
20
  })}
21
21
 
22
- its(:name) { should == 'production' }
23
- its(:app) { should == 'awesomeapp-demo' }
24
- its(:stack) { should == 'cedar' }
25
- its(:tag) { should == "demo/*" }
26
- its(:config) { should == {"BUNDLE_WITHOUT"=>"development:test"} }
27
- its(:repo) { should == 'git@heroku.com:awesomeapp-demo.git' }
28
- its(:addons) { should == ['one:addon', 'two:addons'] }
22
+ it { expect(subject.name).to eq 'production' }
23
+ it { expect(subject.app).to eq 'awesomeapp-demo' }
24
+ it { expect(subject.stack).to eq 'cedar' }
25
+ it { expect(subject.tag).to eq "demo/*" }
26
+ it { expect(subject.config).to eq("BUNDLE_WITHOUT"=>"development:test") }
27
+ it { expect(subject.repo).to eq 'git@heroku.com:awesomeapp-demo.git' }
28
+ it { expect(subject.addons).to eq ['one:addon', 'two:addons'] }
29
29
  end
30
30
 
31
31
  describe "#app" do
32
- its(:app) { should == 'awesomeapp'}
32
+ it { expect(subject.app).to eq 'awesomeapp'}
33
33
  context "blank app" do
34
34
  subject { Factory::Stage.build('production') }
35
35
  it "should raise an error" do
@@ -42,13 +42,13 @@ describe HerokuSan::Stage do
42
42
  it "returns the name of the stack from Heroku" do
43
43
  subject = Factory::Stage.build('production', {"app" => "awesomeapp"})
44
44
  with_app(subject, 'name' => subject.app) do |app_data|
45
- subject.stack.should == 'bamboo-mri-1.9.2'
45
+ expect(subject.stack).to eq 'bamboo-mri-1.9.2'
46
46
  end
47
47
  end
48
48
 
49
49
  it "returns the stack name from the config when it is set there" do
50
50
  subject = Factory::Stage.build('production', {"app" => "awesomeapp", "stack" => "cedar"})
51
- subject.stack.should == 'cedar'
51
+ expect(subject.stack).to eq 'cedar'
52
52
  end
53
53
  end
54
54
 
@@ -56,7 +56,7 @@ describe HerokuSan::Stage do
56
56
  subject { Factory::Stage.build('production', {'addons' => addons}) }
57
57
  context 'default' do
58
58
  let(:addons) { nil }
59
- its(:addons) { should == [] }
59
+ it { expect(subject.addons).to eq [] }
60
60
  end
61
61
  context 'nested' do
62
62
  # This is for when you do:
@@ -68,37 +68,37 @@ describe HerokuSan::Stage do
68
68
  # - *default_addons
69
69
  # - other
70
70
  let(:addons) { [ ['a', 'b'], 'other' ] }
71
- its(:addons) { should == [ 'a', 'b', 'other' ] }
71
+ it { expect(subject.addons).to eq [ 'a', 'b', 'other' ] }
72
72
  end
73
73
  end
74
74
 
75
75
  describe "#run" do
76
76
  it "runs commands using the new cedar format" do
77
- subject.heroku.should_receive(:system).with("heroku", "run", "worker foo bar bleh", "--app", "awesomeapp") { true }
77
+ expect(subject.heroku).to receive(:system).with("heroku", "run", "worker foo bar bleh", "--app", "awesomeapp", "--exit-code") { true }
78
78
  subject.run 'worker foo bar bleh'
79
79
  end
80
80
  end
81
81
 
82
82
  describe "#push" do
83
83
  it "deploys to heroku" do
84
- subject.should_receive(:git_parsed_tag).with(nil) {'tag'}
85
- subject.should_receive(:git_push).with('tag', subject.repo, [])
84
+ expect(subject).to receive(:git_parsed_tag).with(nil) {'tag'}
85
+ expect(subject).to receive(:git_push).with('tag', subject.repo, [])
86
86
  subject.push
87
87
  end
88
88
 
89
89
  it "deploys with a custom sha" do
90
- subject.should_receive(:git_push).with('deadbeef', subject.repo, [])
90
+ expect(subject).to receive(:git_push).with('deadbeef', subject.repo, [])
91
91
  subject.push('deadbeef')
92
92
  end
93
93
 
94
94
  it "deploys with --force" do
95
- subject.should_receive(:git_parsed_tag).with(nil) {'tag'}
96
- subject.should_receive(:git_push).with('tag', subject.repo, %w[--force])
95
+ expect(subject).to receive(:git_parsed_tag).with(nil) {'tag'}
96
+ expect(subject).to receive(:git_push).with('tag', subject.repo, %w[--force])
97
97
  subject.push(nil, :force)
98
98
  end
99
99
 
100
100
  it "deploys with a custom sha & --force" do
101
- subject.should_receive(:git_push).with('deadbeef', subject.repo, %w[--force])
101
+ expect(subject).to receive(:git_push).with('deadbeef', subject.repo, %w[--force])
102
102
  subject.push('deadbeef', :force)
103
103
  end
104
104
  end
@@ -106,8 +106,8 @@ describe HerokuSan::Stage do
106
106
  describe "#migrate" do
107
107
  it "runs rake db:migrate" do
108
108
  with_app(subject, 'name' => subject.app) do |app_data|
109
- subject.should_receive(:run).with('rake db:migrate').and_return 'output:'
110
- subject.migrate.should == "restarted"
109
+ expect(subject).to receive(:run).with('rake db:migrate').and_return 'output:'
110
+ expect(subject.migrate).to eq "restarted"
111
111
  end
112
112
  end
113
113
  end
@@ -115,7 +115,7 @@ describe HerokuSan::Stage do
115
115
  describe "#deploy" do
116
116
  context "using the default strategy" do
117
117
  it "(rails) pushes & migrates" do
118
- HerokuSan::Deploy::Rails.any_instance.should_receive(:deploy)
118
+ allow_any_instance_of(HerokuSan::Deploy::Rails).to receive(:deploy)
119
119
  subject.deploy
120
120
  end
121
121
  end
@@ -126,7 +126,7 @@ describe HerokuSan::Stage do
126
126
  end
127
127
  subject = Factory::Stage.build('test', {"app" => "awesomeapp", "deploy" => TestDeployStrategy})
128
128
  it "(custom) calls deploy" do
129
- TestDeployStrategy.any_instance.should_receive(:deploy)
129
+ expect_any_instance_of(TestDeployStrategy).to receive(:deploy)
130
130
  subject.deploy
131
131
  end
132
132
  end
@@ -135,13 +135,13 @@ describe HerokuSan::Stage do
135
135
  describe "#maintenance" do
136
136
  it ":on" do
137
137
  with_app(subject, 'name' => subject.app )do |app_data|
138
- subject.maintenance(:on).status.should == 200
138
+ expect(subject.maintenance(:on).status).to eq 200
139
139
  end
140
140
  end
141
141
 
142
142
  it ":off" do
143
143
  with_app(subject, 'name' => subject.app) do |app_data|
144
- subject.maintenance(:off).status.should.should == 200
144
+ expect(subject.maintenance(:off).status).to eq 200
145
145
  end
146
146
  end
147
147
 
@@ -154,9 +154,9 @@ describe HerokuSan::Stage do
154
154
  context "with a block" do
155
155
  it "wraps it in a maintenance mode" do
156
156
  with_app(subject, 'name' => subject.app) do |app_data|
157
- subject.heroku.should_receive(:post_app_maintenance).with(subject.app, '1').ordered
158
- reactor = double("Reactor"); reactor.should_receive(:scram).with(:now).ordered
159
- subject.heroku.should_receive(:post_app_maintenance).with(subject.app, '0').ordered
157
+ expect(subject.heroku).to receive(:post_app_maintenance).with(subject.app, '1').ordered
158
+ reactor = double("Reactor"); expect(reactor).to receive(:scram).with(:now).ordered
159
+ expect(subject.heroku).to receive(:post_app_maintenance).with(subject.app, '0').ordered
160
160
 
161
161
  subject.maintenance {reactor.scram(:now)}
162
162
  end
@@ -164,11 +164,11 @@ describe HerokuSan::Stage do
164
164
 
165
165
  it "ensures that maintenance mode is turned off" do
166
166
  with_app(subject, 'name' => subject.app) do |app_data|
167
- subject.heroku.should_receive(:post_app_maintenance).with(subject.app, '1').ordered
168
- reactor = double("Reactor"); reactor.should_receive(:scram).and_raise(RuntimeError)
169
- subject.heroku.should_receive(:post_app_maintenance).with(subject.app, '0').ordered
167
+ expect(subject.heroku).to receive(:post_app_maintenance).with(subject.app, '1').ordered
168
+ reactor = double("Reactor"); expect(reactor).to receive(:scram).and_raise(RuntimeError)
169
+ expect(subject.heroku).to receive(:post_app_maintenance).with(subject.app, '0').ordered
170
170
 
171
- expect do subject.maintenance {reactor.scram(:now)} end.to raise_error
171
+ expect do subject.maintenance {reactor.scram(:now)} end.to raise_error StandardError
172
172
  end
173
173
  end
174
174
  end
@@ -180,30 +180,30 @@ describe HerokuSan::Stage do
180
180
  end
181
181
 
182
182
  it "uses the provided name" do
183
- (@app = subject.create).should == 'awesomeapp'
183
+ expect((@app = subject.create)).to eq 'awesomeapp'
184
184
  end
185
185
 
186
186
  it "creates an app on heroku" do
187
187
  subject = Factory::Stage.build('production')
188
- (@app = subject.create).should =~ /generated-name-\d+/
188
+ expect(@app = subject.create).to match /generated-name-\d+/
189
189
  end
190
190
 
191
191
  it "uses the default stack if none is given" do
192
192
  subject = Factory::Stage.build('production')
193
- (@app = subject.create).should =~ /generated-name-\d+/
194
- subject.heroku.get_stack(@app).body.detect{|stack| stack['current']}['name'].should == 'bamboo-mri-1.9.2'
193
+ expect(@app = subject.create).to match /generated-name-\d+/
194
+ expect(subject.heroku.get_stack(@app).body.detect{|stack| stack['current']}['name']).to eq 'bamboo-mri-1.9.2'
195
195
  end
196
196
 
197
197
  it "uses the stack from the config" do
198
- (@app = subject.create).should == 'awesomeapp'
199
- subject.heroku.get_stack(@app).body.detect{|stack| stack['current']}['name'].should == 'cedar'
198
+ expect(@app = subject.create).to eq 'awesomeapp'
199
+ expect(subject.heroku.get_stack(@app).body.detect{|stack| stack['current']}['name']).to eq 'cedar'
200
200
  end
201
201
  end
202
202
 
203
203
  describe "#long_config" do
204
204
  it "returns the remote config" do
205
205
  with_app(subject, 'name' => subject.app) do |app_data|
206
- subject.long_config.should == STOCK_CONFIG
206
+ expect(subject.long_config).to eq STOCK_CONFIG
207
207
  end
208
208
  end
209
209
  end
@@ -212,14 +212,14 @@ describe HerokuSan::Stage do
212
212
  it "updates the configuration settings on Heroku" do
213
213
  subject = Factory::Stage.build('test', {"app" => "awesomeapp", "config" => {'FOO' => 'bar', 'DOG' => 'emu'}})
214
214
  with_app(subject, 'name' => subject.app) do |app_data|
215
- subject.push_config.should == STOCK_CONFIG.merge('FOO' => 'bar', 'DOG' => 'emu')
215
+ expect(subject.push_config).to eq STOCK_CONFIG.merge('FOO' => 'bar', 'DOG' => 'emu')
216
216
  end
217
217
  end
218
218
 
219
219
  it "pushes the options hash" do
220
220
  subject = Factory::Stage.build('test', {"app" => "awesomeapp", "config" => {'FOO' => 'bar', 'DOG' => 'emu'}})
221
221
  with_app(subject, 'name' => subject.app) do |app_data|
222
- subject.push_config('RACK_ENV' => 'magic').should == STOCK_CONFIG.merge('RACK_ENV' => 'magic')
222
+ expect(subject.push_config('RACK_ENV' => 'magic')).to eq STOCK_CONFIG.merge('RACK_ENV' => 'magic')
223
223
  end
224
224
  end
225
225
  end
@@ -227,41 +227,41 @@ describe HerokuSan::Stage do
227
227
  describe "#restart" do
228
228
  it "restarts an app" do
229
229
  with_app(subject, 'name' => subject.app) do |app_data|
230
- subject.restart.should == 'restarted'
230
+ expect(subject.restart).to eq 'restarted'
231
231
  end
232
232
  end
233
233
  end
234
234
 
235
235
  describe "#logs" do
236
236
  it "returns log files" do
237
- subject.heroku.should_receive(:system).with("heroku", "logs", "--app", "awesomeapp") { true }
237
+ expect(subject.heroku).to receive(:system).with("heroku", "logs", "--app", "awesomeapp", "--exit-code") { true }
238
238
  subject.logs
239
239
  end
240
240
 
241
241
  it "tails log files" do
242
- subject.heroku.should_receive(:system).with("heroku", "logs", "--tail", "--app", "awesomeapp") { true }
242
+ expect(subject.heroku).to receive(:system).with("heroku", "logs", "--tail", "--app", "awesomeapp", "--exit-code") { true }
243
243
  subject.logs(:tail)
244
244
  end
245
245
  end
246
246
 
247
247
  describe "#revision" do
248
248
  it "returns the named remote revision for the stage" do
249
- subject.should_receive(:git_revision).with(subject.repo) {"sha"}
250
- subject.should_receive(:git_named_rev).with('sha') {"sha production/123456"}
251
- subject.revision.should == 'sha production/123456'
249
+ expect(subject).to receive(:git_revision).with(subject.repo) {"sha"}
250
+ expect(subject).to receive(:git_named_rev).with('sha') {"sha production/123456"}
251
+ expect(subject.revision).to eq 'sha production/123456'
252
252
  end
253
253
 
254
254
  it "returns nil if the stage has never been deployed" do
255
- subject.should_receive(:git_revision).with(subject.repo) {nil}
256
- subject.should_receive(:git_named_rev).with(nil) {''}
257
- subject.revision.should == ''
255
+ expect(subject).to receive(:git_revision).with(subject.repo) {nil}
256
+ expect(subject).to receive(:git_named_rev).with(nil) {''}
257
+ expect(subject.revision).to eq ''
258
258
  end
259
259
  end
260
260
 
261
261
  describe "#installed_addons" do
262
262
  it "returns the list of installed addons" do
263
263
  with_app(subject, 'name' => subject.app) do |app_data|
264
- subject.installed_addons.map{|a|a['name']}.should include *%w[shared-database:5mb]
264
+ expect(subject.installed_addons.map{|a|a['name']}).to include *%w[shared-database:5mb]
265
265
  end
266
266
  end
267
267
  end
@@ -271,15 +271,15 @@ describe HerokuSan::Stage do
271
271
 
272
272
  it "installs the addons" do
273
273
  with_app(subject, 'name' => subject.app) do |app_data|
274
- subject.install_addons.map{|a| a['name']}.should include *%w[custom_domains:basic ssl:piggyback]
275
- subject.installed_addons.map{|a|a['name']}.should =~ subject.install_addons.map{|a| a['name']}
274
+ expect(subject.install_addons.map{|a| a['name']}).to include *%w[custom_domains:basic ssl:piggyback]
275
+ expect(subject.installed_addons.map{|a|a['name']}).to match subject.install_addons.map{|a| a['name']}
276
276
  end
277
277
  end
278
278
 
279
279
  it "only installs missing addons" do
280
280
  subject = Factory::Stage.build('production', {"app" => "awesomeapp", "stack" => "bamboo-ree-1.8.7", "addons" => %w[shared-database:5mb custom_domains:basic ssl:piggyback]})
281
281
  with_app(subject, 'name' => subject.app) do |app_data|
282
- subject.install_addons.map{|a| a['name']}.should include *%w[shared-database:5mb custom_domains:basic ssl:piggyback]
282
+ expect(subject.install_addons.map{|a| a['name']}).to include *%w[shared-database:5mb custom_domains:basic ssl:piggyback]
283
283
  end
284
284
  end
285
285
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku_san
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.2
5
- prerelease:
4
+ version: 4.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Elijah Miller
@@ -12,54 +11,48 @@ authors:
12
11
  autorequire:
13
12
  bindir: bin
14
13
  cert_chain: []
15
- date: 2013-10-28 00:00:00.000000000 Z
14
+ date: 2016-03-11 00:00:00.000000000 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
17
  name: heroku-api
19
18
  requirement: !ruby/object:Gem::Requirement
20
- none: false
21
19
  requirements:
22
- - - ! '>='
20
+ - - ">="
23
21
  - !ruby/object:Gem::Version
24
22
  version: 0.1.2
25
23
  type: :runtime
26
24
  prerelease: false
27
25
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
26
  requirements:
30
- - - ! '>='
27
+ - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 0.1.2
33
30
  - !ruby/object:Gem::Dependency
34
31
  name: json
35
32
  requirement: !ruby/object:Gem::Requirement
36
- none: false
37
33
  requirements:
38
- - - ! '>='
34
+ - - ">="
39
35
  - !ruby/object:Gem::Version
40
36
  version: '0'
41
37
  type: :runtime
42
38
  prerelease: false
43
39
  version_requirements: !ruby/object:Gem::Requirement
44
- none: false
45
40
  requirements:
46
- - - ! '>='
41
+ - - ">="
47
42
  - !ruby/object:Gem::Version
48
43
  version: '0'
49
44
  - !ruby/object:Gem::Dependency
50
45
  name: rake
51
46
  requirement: !ruby/object:Gem::Requirement
52
- none: false
53
47
  requirements:
54
- - - ! '>='
48
+ - - ">="
55
49
  - !ruby/object:Gem::Version
56
50
  version: '0'
57
51
  type: :runtime
58
52
  prerelease: false
59
53
  version_requirements: !ruby/object:Gem::Requirement
60
- none: false
61
54
  requirements:
62
- - - ! '>='
55
+ - - ">="
63
56
  - !ruby/object:Gem::Version
64
57
  version: '0'
65
58
  description: Manage multiple Heroku instances/apps for a single Rails app using Rake
@@ -69,10 +62,10 @@ extensions: []
69
62
  extra_rdoc_files:
70
63
  - README.md
71
64
  files:
72
- - .gitignore
73
- - .ruby-gemset
74
- - .ruby-version
75
- - .travis.yml
65
+ - ".gitignore"
66
+ - ".ruby-gemset"
67
+ - ".ruby-version"
68
+ - ".travis.yml"
76
69
  - CHANGELOG.md
77
70
  - Gemfile
78
71
  - Guardfile
@@ -130,32 +123,28 @@ files:
130
123
  homepage: http://github.com/fastestforward/heroku_san
131
124
  licenses:
132
125
  - MIT
126
+ metadata: {}
133
127
  post_install_message:
134
128
  rdoc_options: []
135
129
  require_paths:
136
130
  - lib
137
131
  required_ruby_version: !ruby/object:Gem::Requirement
138
- none: false
139
132
  requirements:
140
- - - ! '>='
133
+ - - ">="
141
134
  - !ruby/object:Gem::Version
142
135
  version: '0'
143
- segments:
144
- - 0
145
- hash: -1867339558335233432
146
136
  required_rubygems_version: !ruby/object:Gem::Requirement
147
- none: false
148
137
  requirements:
149
- - - ! '>='
138
+ - - ">="
150
139
  - !ruby/object:Gem::Version
151
140
  version: '0'
152
141
  requirements: []
153
142
  rubyforge_project:
154
- rubygems_version: 1.8.23
143
+ rubygems_version: 2.4.5.1
155
144
  signing_key:
156
- specification_version: 3
157
- summary: ! 'A bunch of useful Rake tasks for managing your Heroku apps. NOTE: The
158
- Heroku Toolbelt must be installed to use this gem. https://toolbelt.heroku.com/'
145
+ specification_version: 4
146
+ summary: 'A bunch of useful Rake tasks for managing your Heroku apps. NOTE: The Heroku
147
+ Toolbelt must be installed to use this gem. https://toolbelt.heroku.com/'
159
148
  test_files:
160
149
  - features/config.feature
161
150
  - features/extended-config.feature