heroku_san 1.2.0 → 1.2.1

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/README.rdoc CHANGED
@@ -107,6 +107,10 @@ Issue Tracker:: http://github.com/fastestforward/heroku_san/issues
107
107
  * Michael Haddad (michael@ludditetechnology.com)
108
108
  * Les Hill (leshill@gmail.com)
109
109
  * Bryan Ash
110
+ * Barry Hess (barry@bjhess.com)
111
+ * Ryan Ahearn (ryan@craftsoftwaresolutions.com)
112
+ * Jon Wood (jon@blankpad.net)
113
+ * Mat Schaffer (mat@schaffer.me)
110
114
 
111
115
  == License
112
116
 
data/heroku_san.gemspec CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{heroku_san}
5
- s.version = "1.2.0"
5
+ s.version = "1.2.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Elijah Miller", "Glenn Roberts"]
8
+ s.authors = ["Elijah Miller", "Glenn Roberts", "Ryan Ahearn"]
9
9
  s.date = %q{2011-03-14}
10
10
  s.description = %q{Manage multiple Heroku instances/apps for a single Rails app using Rake}
11
11
  s.email = %q{elijah.miller@gmail.com}
@@ -22,19 +22,19 @@ Gem::Specification.new do |s|
22
22
 
23
23
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
24
24
  s.add_runtime_dependency(%q<rails>, ['>= 2'])
25
- s.add_runtime_dependency(%q<heroku>)
25
+ s.add_runtime_dependency(%q<heroku>, ['>= 2'])
26
26
  s.add_development_dependency(%q<rails>, ['>= 3'])
27
27
  s.add_development_dependency(%q<aruba>)
28
28
  s.add_development_dependency(%q<cucumber>)
29
29
  else
30
30
  s.add_dependency(%q<rails>, ['>= 2'])
31
- s.add_dependency(%q<heroku>)
31
+ s.add_dependency(%q<heroku>, ['>= 2'])
32
32
  s.add_dependency(%q<aruba>)
33
33
  s.add_dependency(%q<cucumber>)
34
34
  end
35
35
  else
36
36
  s.add_dependency(%q<rails>, ['>= 2'])
37
- s.add_dependency(%q<heroku>)
37
+ s.add_dependency(%q<heroku>, ['>= 2'])
38
38
  s.add_dependency(%q<aruba>)
39
39
  s.add_dependency(%q<cucumber>)
40
40
  end
@@ -1,6 +1,6 @@
1
1
  HEROKU_CONFIG_FILE = Rails.root.join('config', 'heroku.yml')
2
2
 
3
- @app_settings =
3
+ @app_settings =
4
4
  if File.exists?(HEROKU_CONFIG_FILE)
5
5
  if defined?(ERB)
6
6
  YAML.load(ERB.new(File.read(HEROKU_CONFIG_FILE)).result)
@@ -26,7 +26,7 @@ def retrieve_configuration
26
26
  tmp_config_dir = Dir.mktmpdir
27
27
  tmp_config_file = File.join tmp_config_dir, 'config.yml'
28
28
  sh "git clone #{@config_repo} #{tmp_config_dir}"
29
- @extra_config =
29
+ @extra_config =
30
30
  if File.exists?(tmp_config_file)
31
31
  if defined?(ERB)
32
32
  YAML.load(ERB.new(File.read(tmp_config_file)).result)
@@ -151,7 +151,11 @@ namespace :heroku do
151
151
  else
152
152
  puts "Copied example config to config/heroku.yml"
153
153
  FileUtils.cp(example, HEROKU_CONFIG_FILE)
154
- sh("#{ENV['EDITOR']} #{HEROKU_CONFIG_FILE}")
154
+ if ENV['EDITOR'].present?
155
+ sh("#{ENV['EDITOR']} #{HEROKU_CONFIG_FILE}")
156
+ else
157
+ puts "Please edit config/heroku.yml with your application's settings."
158
+ end
155
159
  end
156
160
  end
157
161
 
@@ -159,9 +163,11 @@ namespace :heroku do
159
163
  task :config do
160
164
  retrieve_configuration
161
165
  each_heroku_app do |name, app, repo, config|
162
- (config).each do |var, value|
163
- sh "heroku config:add --app #{app} #{var}=#{value}"
166
+ command = "heroku config:add --app #{app}"
167
+ config.each do |var, value|
168
+ command += " #{var}=#{value}"
164
169
  end
170
+ sh(command)
165
171
  end
166
172
  end
167
173
 
@@ -226,7 +232,7 @@ namespace :heroku do
226
232
  end
227
233
 
228
234
  desc "Pushes the given commit, migrates and restarts (default: HEAD)"
229
- task :deploy, :commit, :needs => :before_deploy do |t, args|
235
+ task :deploy, [:commit] => [:before_deploy] do |t, args|
230
236
  each_heroku_app do |name, app, repo|
231
237
  push(args[:commit], repo)
232
238
  migrate(app)
@@ -239,7 +245,7 @@ namespace :deploy do
239
245
  task :force, :commit do |t, args|
240
246
  @git_push_arguments ||= []
241
247
  @git_push_arguments << '--force'
242
- Rake::Task[:deploy].invoke(args)
248
+ Rake::Task[:deploy].invoke(args[:commit])
243
249
  end
244
250
  end
245
251
 
@@ -292,19 +298,37 @@ task :logs do
292
298
  end
293
299
 
294
300
  namespace :db do
301
+ desc 'Pull the Heroku database'
295
302
  task :pull do
303
+ dbconfig = YAML.load(ERB.new(File.read(Rails.root.join('config/database.yml'))).result)[Rails.env]
304
+ return if dbconfig['adapter'] != 'postgresql'
305
+
296
306
  each_heroku_app do |name, app, repo|
297
- sh "heroku pgdumps:capture --app #{app}"
298
- dump = `heroku pgdumps --app #{app}`.split("\n").last.split(" ").first
307
+ oldest = `heroku pgbackups --app #{app}`.split("\n")[2].split(" ").first
308
+ sh "heroku pgbackups:destroy #{oldest} --app #{app}"
309
+
310
+ sh "heroku pgbackups:capture --app #{app}"
311
+ dump = `heroku pgbackups --app #{app}`.split("\n").last.split(" ").first
299
312
  sh "mkdir -p #{Rails.root}/db/dumps"
300
- file = "#{Rails.root}/db/dumps/#{dump}.sql.gz"
301
- url = `heroku pgdumps:url --app #{app} #{dump}`.chomp
313
+ file = "#{Rails.root}/db/dumps/#{dump}"
314
+ url = `heroku pgbackups:url --app #{app} #{dump}`.chomp
302
315
  sh "wget", url, "-O", file
303
- sh "rake db:drop db:create"
304
- sh "gunzip -c #{file} | #{Rails.root}/script/dbconsole"
316
+
317
+ sh "rake db:setup"
318
+ sh "pg_restore --verbose --clean --no-acl --no-owner -h #{dbconfig['host']} -p #{dbconfig['port']} -U #{dbconfig['username']} -d #{dbconfig['database']} #{file}"
305
319
  sh "rake jobs:clear"
306
320
  end
307
321
  end
322
+
323
+ desc 'Push local database for Heroku database'
324
+ task :push do
325
+ dbconfig = YAML.load(ERB.new(File.read(Rails.root.join('config/database.yml'))).result)[Rails.env]
326
+ return if dbconfig['adapter'] != 'postgresql'
327
+
328
+ each_heroku_app do |name, app, repo|
329
+ sh "heroku db:push postgres://#{dbconfig['username']}:#{dbconfig['password']}@#{dbconfig['host']}/#{dbconfig['database']} --app #{app}"
330
+ end
331
+ end
308
332
  end
309
333
 
310
334
  def each_heroku_app
metadata CHANGED
@@ -1,17 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroku_san
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
5
4
  prerelease:
6
- segments:
7
- - 1
8
- - 2
9
- - 0
10
- version: 1.2.0
5
+ version: 1.2.1
11
6
  platform: ruby
12
7
  authors:
13
8
  - Elijah Miller
14
9
  - Glenn Roberts
10
+ - Ryan Ahearn
15
11
  autorequire:
16
12
  bindir: bin
17
13
  cert_chain: []
@@ -27,9 +23,6 @@ dependencies:
27
23
  requirements:
28
24
  - - ">="
29
25
  - !ruby/object:Gem::Version
30
- hash: 7
31
- segments:
32
- - 2
33
26
  version: "2"
34
27
  type: :runtime
35
28
  version_requirements: *id001
@@ -41,10 +34,7 @@ dependencies:
41
34
  requirements:
42
35
  - - ">="
43
36
  - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
37
+ version: "2"
48
38
  type: :runtime
49
39
  version_requirements: *id002
50
40
  - !ruby/object:Gem::Dependency
@@ -55,9 +45,6 @@ dependencies:
55
45
  requirements:
56
46
  - - ">="
57
47
  - !ruby/object:Gem::Version
58
- hash: 5
59
- segments:
60
- - 3
61
48
  version: "3"
62
49
  type: :development
63
50
  version_requirements: *id003
@@ -69,9 +56,6 @@ dependencies:
69
56
  requirements:
70
57
  - - ">="
71
58
  - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
59
  version: "0"
76
60
  type: :development
77
61
  version_requirements: *id004
@@ -83,9 +67,6 @@ dependencies:
83
67
  requirements:
84
68
  - - ">="
85
69
  - !ruby/object:Gem::Version
86
- hash: 3
87
- segments:
88
- - 0
89
70
  version: "0"
90
71
  type: :development
91
72
  version_requirements: *id005
@@ -128,23 +109,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
109
  requirements:
129
110
  - - ">="
130
111
  - !ruby/object:Gem::Version
131
- hash: 3
132
- segments:
133
- - 0
134
112
  version: "0"
135
113
  required_rubygems_version: !ruby/object:Gem::Requirement
136
114
  none: false
137
115
  requirements:
138
116
  - - ">="
139
117
  - !ruby/object:Gem::Version
140
- hash: 3
141
- segments:
142
- - 0
143
118
  version: "0"
144
119
  requirements: []
145
120
 
146
121
  rubyforge_project:
147
- rubygems_version: 1.6.1
122
+ rubygems_version: 1.6.2
148
123
  signing_key:
149
124
  specification_version: 3
150
125
  summary: A bunch of useful Rake tasks for managing your Heroku apps