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 CHANGED
@@ -2,11 +2,12 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{heroku_san}
5
- s.version = "1.2.3"
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}
@@ -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 rake --app #{app} #{args[:task]}"
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
- sh "heroku console --app #{app}"
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
- yield(name, app, "git@heroku.com:#{app}.git", config)
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 rake --app #{app} db:migrate"
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
- hash: 25
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
- date: 2011-08-19 00:00:00 -04:00
21
- default_executable:
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
- prerelease: false
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
- hash: 7
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- hash: 7
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
- requirement: &id003 !ruby/object:Gem::Requirement
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
- hash: 5
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
- requirement: &id004 !ruby/object:Gem::Requirement
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
- hash: 3
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
- requirement: &id005 !ruby/object:Gem::Requirement
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
- hash: 3
88
- segments:
89
- - 0
90
- version: "0"
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
91
68
  type: :development
92
- version_requirements: *id005
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
- hash: 3
133
- segments:
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ segments:
134
107
  - 0
135
- version: "0"
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
- hash: 3
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.6.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