heroku_san 1.2.3 → 1.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/heroku_san.gemspec +3 -2
- data/lib/heroku_san/tasks.rb +34 -5
- data/lib/templates/heroku.example.yml +3 -0
- metadata +63 -94
data/heroku_san.gemspec
CHANGED
@@ -2,11 +2,12 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{heroku_san}
|
5
|
-
|
5
|
+
|
6
|
+
s.version = "1.3.0"
|
7
|
+
s.date = %q{2011-11-07}
|
6
8
|
|
7
9
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
10
|
s.authors = ["Elijah Miller", "Glenn Roberts", "Ryan Ahearn"]
|
9
|
-
s.date = %q{2011-08-19}
|
10
11
|
s.description = %q{Manage multiple Heroku instances/apps for a single Rails app using Rake}
|
11
12
|
s.email = %q{elijah.miller@gmail.com}
|
12
13
|
s.homepage = %q{http://github.com/glennr/heroku_san}
|
data/lib/heroku_san/tasks.rb
CHANGED
@@ -56,7 +56,7 @@ namespace :heroku do
|
|
56
56
|
desc "Creates the Heroku app"
|
57
57
|
task :create do
|
58
58
|
each_heroku_app do |name, app, repo|
|
59
|
-
sh "heroku create #{app}"
|
59
|
+
sh "heroku create #{app} #{("--stack " + stack(app)) if stack(app)}"
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
@@ -196,7 +196,7 @@ namespace :heroku do
|
|
196
196
|
desc 'Runs a rake task remotely'
|
197
197
|
task :rake, :task do |t, args|
|
198
198
|
each_heroku_app do |name, app, repo|
|
199
|
-
sh "heroku
|
199
|
+
sh "heroku #{run_or_rake(app)} #{args[:task]}"
|
200
200
|
end
|
201
201
|
end
|
202
202
|
|
@@ -272,7 +272,11 @@ end
|
|
272
272
|
desc "Opens a remote console"
|
273
273
|
task :console do
|
274
274
|
each_heroku_app do |name, app, repo|
|
275
|
-
|
275
|
+
if stack_is_cedar?(app)
|
276
|
+
sh "heroku run --app #{app} console"
|
277
|
+
else
|
278
|
+
sh "heroku console --app #{app}"
|
279
|
+
end
|
276
280
|
end
|
277
281
|
end
|
278
282
|
|
@@ -353,7 +357,12 @@ def each_heroku_app
|
|
353
357
|
app = @app_settings[name]['app']
|
354
358
|
config = @app_settings[name]['config'] || {}
|
355
359
|
config.merge!(@extra_config[name]) if (@extra_config && @extra_config[name])
|
356
|
-
|
360
|
+
if @app_settings[name].has_key? 'repo'
|
361
|
+
repo = @app_settings[name]['repo']
|
362
|
+
else
|
363
|
+
repo = "git@heroku.com:#{app}.git"
|
364
|
+
end
|
365
|
+
yield(name, app, repo, config)
|
357
366
|
end
|
358
367
|
puts
|
359
368
|
else
|
@@ -381,10 +390,30 @@ def push(commit, repo)
|
|
381
390
|
end
|
382
391
|
|
383
392
|
def migrate(app)
|
384
|
-
sh "heroku
|
393
|
+
sh "heroku #{run_or_rake(app)} db:migrate"
|
385
394
|
sh "heroku restart --app #{app}"
|
386
395
|
end
|
387
396
|
|
388
397
|
def maintenance(app, action)
|
389
398
|
sh "heroku maintenance:#{action} --app #{app}"
|
390
399
|
end
|
400
|
+
|
401
|
+
# `heroku rake foo` has been superseded by `heroku run rake foo` on cedar
|
402
|
+
def run_or_rake(app)
|
403
|
+
if stack_is_cedar?(app)
|
404
|
+
"run --app #{app} rake"
|
405
|
+
else
|
406
|
+
"rake --app #{app}"
|
407
|
+
end
|
408
|
+
end
|
409
|
+
|
410
|
+
def stack_is_cedar?(app)
|
411
|
+
stack(app) =~ /^cedar/
|
412
|
+
end
|
413
|
+
|
414
|
+
def stack(app)
|
415
|
+
@app_settings.values.detect { |s| s['app'] == app }.tap do |settings|
|
416
|
+
@stack = (settings['stack'] || (/^\* (.*)/.match `heroku stack --app #{app}`)[1] rescue nil)
|
417
|
+
end
|
418
|
+
@stack
|
419
|
+
end
|
@@ -3,16 +3,19 @@
|
|
3
3
|
#
|
4
4
|
# <heroku_san shorthand name>:
|
5
5
|
# app: <Heroku app name>
|
6
|
+
# stack: <Heroku stack, optional>
|
6
7
|
# config:
|
7
8
|
# - <Heroku config:var name>: <Heroku config:var value>
|
8
9
|
#
|
9
10
|
production:
|
10
11
|
app: awesomeapp
|
12
|
+
stack: bamboo-ree-1.8.7
|
11
13
|
config:
|
12
14
|
BUNDLE_WITHOUT: "development:test"
|
13
15
|
GOOGLE_ANALYTICS: "UA-12345678-1"
|
14
16
|
|
15
17
|
staging:
|
18
|
+
stack: cedar
|
16
19
|
app: awesomeapp-staging
|
17
20
|
config: &default
|
18
21
|
BUNDLE_WITHOUT: "development:test"
|
metadata
CHANGED
@@ -1,104 +1,80 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: heroku_san
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.3.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
- 3
|
10
|
-
version: 1.2.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Elijah Miller
|
14
9
|
- Glenn Roberts
|
15
10
|
- Ryan Ahearn
|
16
11
|
autorequire:
|
17
12
|
bindir: bin
|
18
13
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
dependencies:
|
23
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
date: 2011-11-07 00:00:00.000000000Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
24
17
|
name: rails
|
25
|
-
|
26
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirement: &70239580705520 !ruby/object:Gem::Requirement
|
27
19
|
none: false
|
28
|
-
requirements:
|
29
|
-
- -
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
|
32
|
-
segments:
|
33
|
-
- 2
|
34
|
-
version: "2"
|
20
|
+
requirements:
|
21
|
+
- - ! '>='
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '2'
|
35
24
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: heroku
|
39
25
|
prerelease: false
|
40
|
-
|
26
|
+
version_requirements: *70239580705520
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: heroku
|
29
|
+
requirement: &70239580704340 !ruby/object:Gem::Requirement
|
41
30
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
segments:
|
47
|
-
- 2
|
48
|
-
version: "2"
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '2'
|
49
35
|
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: rails
|
53
36
|
prerelease: false
|
54
|
-
|
37
|
+
version_requirements: *70239580704340
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: rails
|
40
|
+
requirement: &70239580700620 !ruby/object:Gem::Requirement
|
55
41
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
segments:
|
61
|
-
- 3
|
62
|
-
version: "3"
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3'
|
63
46
|
type: :development
|
64
|
-
version_requirements: *id003
|
65
|
-
- !ruby/object:Gem::Dependency
|
66
|
-
name: aruba
|
67
47
|
prerelease: false
|
68
|
-
|
48
|
+
version_requirements: *70239580700620
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: aruba
|
51
|
+
requirement: &70239580699940 !ruby/object:Gem::Requirement
|
69
52
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
|
74
|
-
segments:
|
75
|
-
- 0
|
76
|
-
version: "0"
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
77
57
|
type: :development
|
78
|
-
version_requirements: *id004
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: cucumber
|
81
58
|
prerelease: false
|
82
|
-
|
59
|
+
version_requirements: *70239580699940
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: cucumber
|
62
|
+
requirement: &70239580654620 !ruby/object:Gem::Requirement
|
83
63
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
88
|
-
segments:
|
89
|
-
- 0
|
90
|
-
version: "0"
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
91
68
|
type: :development
|
92
|
-
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *70239580654620
|
93
71
|
description: Manage multiple Heroku instances/apps for a single Rails app using Rake
|
94
72
|
email: elijah.miller@gmail.com
|
95
73
|
executables: []
|
96
|
-
|
97
74
|
extensions: []
|
98
|
-
|
99
|
-
extra_rdoc_files:
|
75
|
+
extra_rdoc_files:
|
100
76
|
- README.rdoc
|
101
|
-
files:
|
77
|
+
files:
|
102
78
|
- .gitignore
|
103
79
|
- .gitmodules
|
104
80
|
- .rvmrc
|
@@ -115,41 +91,34 @@ files:
|
|
115
91
|
- lib/heroku_san/tasks.rb
|
116
92
|
- lib/tasks/heroku.rake
|
117
93
|
- lib/templates/heroku.example.yml
|
118
|
-
has_rdoc: true
|
119
94
|
homepage: http://github.com/glennr/heroku_san
|
120
95
|
licenses: []
|
121
|
-
|
122
96
|
post_install_message:
|
123
97
|
rdoc_options: []
|
124
|
-
|
125
|
-
require_paths:
|
98
|
+
require_paths:
|
126
99
|
- lib
|
127
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
128
101
|
none: false
|
129
|
-
requirements:
|
130
|
-
- -
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
|
133
|
-
segments:
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
segments:
|
134
107
|
- 0
|
135
|
-
|
136
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
hash: -81552674531593559
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
110
|
none: false
|
138
|
-
requirements:
|
139
|
-
- -
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
|
142
|
-
segments:
|
143
|
-
- 0
|
144
|
-
version: "0"
|
111
|
+
requirements:
|
112
|
+
- - ! '>='
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '0'
|
145
115
|
requirements: []
|
146
|
-
|
147
116
|
rubyforge_project:
|
148
|
-
rubygems_version: 1.
|
117
|
+
rubygems_version: 1.8.10
|
149
118
|
signing_key:
|
150
119
|
specification_version: 3
|
151
120
|
summary: A bunch of useful Rake tasks for managing your Heroku apps
|
152
|
-
test_files:
|
121
|
+
test_files:
|
153
122
|
- features/command_line.feature
|
154
123
|
- features/extended-config.feature
|
155
124
|
- features/support/env.rb
|