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 +4 -0
- data/heroku_san.gemspec +5 -5
- data/lib/heroku_san/tasks.rb +37 -13
- metadata +4 -29
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.
|
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
|
data/lib/heroku_san/tasks.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
163
|
-
|
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
|
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
|
-
|
298
|
-
|
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}
|
301
|
-
url = `heroku
|
313
|
+
file = "#{Rails.root}/db/dumps/#{dump}"
|
314
|
+
url = `heroku pgbackups:url --app #{app} #{dump}`.chomp
|
302
315
|
sh "wget", url, "-O", file
|
303
|
-
|
304
|
-
sh "
|
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
|
-
|
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
|
-
|
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.
|
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
|