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.
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +21 -2
- data/Guardfile +21 -0
- data/README.md +1 -1
- data/features/config.feature +1 -1
- data/features/remote.feature +2 -2
- data/features/step_definitions/remote_steps.rb +23 -8
- data/heroku_san.gemspec +0 -8
- data/lib/heroku_san/api.rb +2 -0
- data/lib/heroku_san/application.rb +36 -0
- data/lib/heroku_san/parser.rb +3 -1
- data/lib/heroku_san/stage.rb +2 -0
- data/lib/heroku_san/version.rb +1 -1
- data/spec/heroku_san/api_spec.rb +2 -0
- data/spec/heroku_san/application_spec.rb +81 -0
- data/spec/heroku_san/configuration_spec.rb +3 -1
- data/spec/{git_spec.rb → heroku_san/git_spec.rb} +0 -0
- data/spec/heroku_san/parser_spec.rb +2 -0
- data/spec/heroku_san/project_spec.rb +2 -0
- data/spec/heroku_san/stage_spec.rb +2 -0
- data/spec/spec_helper.rb +0 -7
- metadata +12 -134
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
heroku_san
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3-p327
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -1,4 +1,23 @@
|
|
1
|
-
source
|
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
|
data/Guardfile
ADDED
@@ -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
|
[](http://travis-ci.org/fastestforward/heroku_san)
|
5
|
-
[](https://codeclimate.com/github/fastestforward/heroku_san)
|
6
6
|
|
7
7
|
## Install
|
8
8
|
|
data/features/config.feature
CHANGED
@@ -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 --
|
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
|
"""
|
data/features/remote.feature
CHANGED
@@ -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 --
|
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
|
-
|
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
|
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
|
-
-
|
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 "
|
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
|
data/heroku_san.gemspec
CHANGED
@@ -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'])
|
data/lib/heroku_san/api.rb
CHANGED
@@ -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
|
data/lib/heroku_san/parser.rb
CHANGED
@@ -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
|
data/lib/heroku_san/stage.rb
CHANGED
@@ -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
|
data/lib/heroku_san/version.rb
CHANGED
data/spec/heroku_san/api_spec.rb
CHANGED
@@ -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
|
File without changes
|
@@ -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
|
data/spec/spec_helper.rb
CHANGED
@@ -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.
|
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-
|
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:
|
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.
|
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
|