effective_developer 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/effective_developer/version.rb +1 -1
- data/lib/tasks/pg_pull.rake +30 -21
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc26ec312df01c35b4f0541fbb8fee46f5b93c32c615cd3c1f0c8c659b67110a
|
4
|
+
data.tar.gz: 74a960c89033ea9531c3d0950e97d2e4bcac7c4d7a64ee4e9bc6cd1029e7ac51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d63cb384af0910ac4f33e2696e4c72ab388fce049c31e35174bd940da6cbfc699e0bc5dcf821e72a60a1d000d6644b351ed231d9b5c5a180bcca8da7d71f5566
|
7
|
+
data.tar.gz: efeb52d66a9c083038609146ac5901ed8cd9521ff5ef74e0cd7537d4ac1fe2d9609095a2d79d998150612c7e2e52ce11ab1f377b824cd6bac21a574d62c1701b
|
data/lib/tasks/pg_pull.rake
CHANGED
@@ -4,14 +4,35 @@ namespace :pg do
|
|
4
4
|
# bundle exec rake pg:pull
|
5
5
|
# bundle exec rake pg:pull[staging]
|
6
6
|
# bundle exec rake pg:pull[158.204.33.124]
|
7
|
+
|
8
|
+
# bundle exec rake pg:pull
|
9
|
+
# bundle exec rake pg:pull[staging]
|
10
|
+
# bundle exec rake pg:pull[158.204.33.124]
|
11
|
+
# bundle exec rake pg:pull filename=latest.dump database=example
|
12
|
+
# DATABASE=example bundle exec rake pg:load
|
7
13
|
desc 'Creates a new backup on remote server and downloads it to latest.dump'
|
8
14
|
task :pull, [:remote] => :environment do |t, args|
|
15
|
+
defaults = { database: nil, filename: (ENV['DATABASE'] || 'latest') + '.dump' }
|
16
|
+
env_keys = { database: ENV['DATABASE'], filename: ENV['FILENAME'] }
|
17
|
+
keywords = ARGV.map { |a| a.split('=') if a.include?('=') }.compact.inject({}) { |h, (k, v)| h[k.to_sym] = v; h }
|
18
|
+
args.with_defaults(defaults.compact.merge(env_keys.compact).merge(keywords))
|
19
|
+
|
20
|
+
# Validate Config
|
21
|
+
config = ActiveRecord::Base.configurations[Rails.env]
|
22
|
+
configs = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env)
|
23
|
+
|
24
|
+
if configs.length > 1 && args.database.blank?
|
25
|
+
puts "Multiple database configs exist for #{Rails.env} environment."
|
26
|
+
puts "Please run bundle exec rake pg:pull database=x"
|
27
|
+
puts "Where x is one of: #{configs.map { |config| config.name }.to_sentence}"
|
28
|
+
exit
|
29
|
+
end
|
9
30
|
|
10
31
|
# Heroku mode
|
11
32
|
if `git remote -v | grep heroku`.length > 0
|
12
33
|
args.with_defaults(remote: 'heroku')
|
13
34
|
|
14
|
-
puts "=== Pulling remote '#{args.remote}' database into
|
35
|
+
puts "=== Pulling remote '#{args.remote}' #{args.database} database into #{args.filename}"
|
15
36
|
|
16
37
|
# Create a backup on heroku
|
17
38
|
unless system("heroku pg:backups:capture --remote #{args.remote}")
|
@@ -19,12 +40,12 @@ namespace :pg do
|
|
19
40
|
end
|
20
41
|
|
21
42
|
# Download it to local
|
22
|
-
unless system("curl -o
|
43
|
+
unless system("curl -o #{args.filename} `heroku pg:backups:public-url --remote #{args.remote}`")
|
23
44
|
abort("Error downloading database")
|
24
45
|
end
|
25
46
|
|
26
47
|
# Load it
|
27
|
-
Rake::Task['pg:load'].invoke
|
48
|
+
Rake::Task['pg:load'].invoke(*args)
|
28
49
|
exit
|
29
50
|
end
|
30
51
|
|
@@ -36,24 +57,24 @@ namespace :pg do
|
|
36
57
|
user: ENV['HATCHBOX_USER'] || 'deploy'
|
37
58
|
)
|
38
59
|
|
39
|
-
puts "=== Pulling hatchbox '#{args.remote}' #{args.app} database into
|
60
|
+
puts "=== Pulling hatchbox '#{args.remote}' #{args.app} #{args.database} database into #{args.filename}"
|
40
61
|
|
41
62
|
# SSH into hatchbox and call rake pg:save there to create latest.dump
|
42
|
-
unless(result = `ssh #{args.user}@#{args.remote} << EOF
|
63
|
+
unless(result = `ssh -T #{args.user}@#{args.remote} << EOF
|
43
64
|
cd ~/#{args.app}/current/
|
44
|
-
bundle exec rake pg:save
|
65
|
+
bundle exec rake pg:save database=#{args.database} filename=#{args.filename}
|
45
66
|
`).include?('Saving database completed') # The output of pg:save down below
|
46
67
|
puts("Error calling ssh #{args.user}@#{args.remote} and running rake pg:save on hatchbox from ~/#{args.app}/current/")
|
47
68
|
abort(result)
|
48
69
|
end
|
49
70
|
|
50
71
|
# SCP to copy the hatchkbox latest.dump to local
|
51
|
-
unless system("scp #{args.user}@#{args.remote}:~/#{args.app}/current
|
72
|
+
unless system("scp #{args.user}@#{args.remote}:~/#{args.app}/current/#{args.filename} ./")
|
52
73
|
abort("Error downloading database")
|
53
74
|
end
|
54
75
|
|
55
76
|
# Load it
|
56
|
-
Rake::Task['pg:load'].invoke
|
77
|
+
Rake::Task['pg:load'].invoke(*args)
|
57
78
|
exit
|
58
79
|
end
|
59
80
|
|
@@ -67,6 +88,7 @@ namespace :pg do
|
|
67
88
|
# bundle exec rake pg:load => Will replace the current database with latest.dump
|
68
89
|
# bundle exec rake pg:load[something.dump] => Will replace the current database with something.dump
|
69
90
|
# bundle exec rake pg:load filename=latest.dump database=example
|
91
|
+
# DATABASE=example bundle exec rake pg:load
|
70
92
|
desc 'Loads a postgresql .dump file into the development database (latest.dump by default)'
|
71
93
|
task :load, [:filename] => :environment do |t, args|
|
72
94
|
defaults = { database: nil, filename: (ENV['DATABASE'] || 'latest') + '.dump' }
|
@@ -106,19 +128,6 @@ namespace :pg do
|
|
106
128
|
|
107
129
|
puts "=== Loading #{args.filename} into local '#{db[:database]}' database"
|
108
130
|
|
109
|
-
# bin/rails db:environment:set RAILS_ENV=development
|
110
|
-
if Rails.env != 'production'
|
111
|
-
ENV['DISABLE_DATABASE_ENVIRONMENT_CHECK'] = '1'
|
112
|
-
end
|
113
|
-
|
114
|
-
if configs.length > 1
|
115
|
-
Rake::Task["db:drop:#{args.database}"].invoke
|
116
|
-
Rake::Task["db:create:#{args.database}"].invoke
|
117
|
-
else
|
118
|
-
Rake::Task['db:drop'].invoke
|
119
|
-
Rake::Task['db:create'].invoke
|
120
|
-
end
|
121
|
-
|
122
131
|
if system("export PGPASSWORD=#{db[:password]}; pg_restore --no-acl --no-owner --clean --if-exists -h #{db[:host]} -U #{db[:username]} -d #{db[:database]} #{args.filename}")
|
123
132
|
puts "Loading database completed"
|
124
133
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_developer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|