heroku_san 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
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