heroku_san 4.3.2 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,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