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 +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
|