pvcglue 0.1.12 → 0.1.13

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjNhNjEzNjA2NzNlZDAyMzQwNjUwNGZlYTI4NjhiNjA2NTQ2ODYyMA==
4
+ ZDhhMjcyM2U3OWEzMmQxZTJkZGRmYmYwNjdlNDllNjlkYWIzMTQxYw==
5
5
  data.tar.gz: !binary |-
6
- MjQxMjEwYTRkNzYxOGFlMGE2M2U3Yjg5NzBkMWE2MTEzOWUzNDRlOA==
6
+ ZjQ5YzNkYjRhYWZmZTI3OWRlNGY0NDhkMDQ3NmQwOWM1MzQ0ODljZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MmRmMjMzMzcwOTlkMDk1OTgyYzc3MjI2OTUyN2NjNDliM2IwZmRhZWZiMjY0
10
- MWVmZmJjYjUyMGU1NzdlNGNlNDlhZWI4NzFkNmJjNWE5MGY2MGJmNTdiNjBi
11
- M2EwOTg1Njc4YjcyMDk5NjhiOTM4YTZjNWVkNzVhMzBkM2I2ZDA=
9
+ N2E3ODdjYmI3YzQ4NmJiOGVjZDcwYjJlYTc3MzY3OWVkMmFkYzlmNjcwNjhh
10
+ YjM1Y2ZiMDI2ODZmYzliODk1ZDAwMGYwZjFhMzA4MmRkZjVmYjcwOWQ2NDFi
11
+ MTVjNTQ1ZTc4YjA3ZDhkMzI0ODJjMzljOWZkYzU5Y2FhNzdiOWE=
12
12
  data.tar.gz: !binary |-
13
- NzFhNTA5NDQyM2JiZmQ3NjlmMjNlYjliZTI0NjU5MjVmMzI3MWY5ZmEzOGRi
14
- YjNiNGQzMTQzMTJhOTdmZDMwMzI0NmNhM2ZjNDU1YjE0YjY2NzFlNjJhODdi
15
- ZWRkMmZkMThjMjFjYzMwZTUyNWRiZDdkZTYyMzNkNTZhMTlhZWY=
13
+ NDYyNDJkYzRiOGVmZDZkMThiYzAwZDMxNGQ1ZWFkNjAyMDM2ODZjMzIxMzJk
14
+ YzY4N2RiYTgzNWY3NzI2ZTc2Nzg3MDJlZmJhNTY3ODdiM2U3MDFmNTlkOTI0
15
+ MjdjN2JjMmM3MDg0MjBlYTA0NDNiMmVmMmM3N2JmZjhiMTliM2M=
data/README.md CHANGED
@@ -146,7 +146,7 @@ Always do a `pvc manager pull` once before making any changes to ensure you have
146
146
  pvc ssl import # import .key or .crt or both if no extension given (.crt must be 'pre...
147
147
  pvc version # show the version of PVC...
148
148
 
149
- https://github.com/radar/guides/blob/master/gem-development.md
149
+ https://github.com/radar/guides/blob/master/gem-development.md#releasing-the-gem
150
150
 
151
151
  ## Installation
152
152
 
@@ -158,7 +158,7 @@ Add these lines to your application's Gemfile. `dotenv-rails` must be listed fi
158
158
 
159
159
  Then add these lines to your application's Gemfile, whereever you like (usually at the end):
160
160
 
161
- gem 'pvcglue', "~> 0.1.10", :group => :development
161
+ gem 'pvcglue', "~> 0.1.12", :group => :development
162
162
  gem 'pvcglue_dbutils', "~> 0.5.3"
163
163
 
164
164
  And then execute:
data/lib/pvcglue/db.rb CHANGED
@@ -35,6 +35,13 @@ module Pvcglue
35
35
  pg_restore(self.class.local, file_name)
36
36
  end
37
37
 
38
+ desc "destroy_all", "destroy_all"
39
+
40
+ def destroy_all
41
+ raise(Thor::Error, "Stage should not be set for this command.") unless Pvcglue.cloud.stage_name.nil?
42
+ pg_destroy(self.class.local)
43
+ end
44
+
38
45
  desc "info", "info"
39
46
 
40
47
  def info
@@ -132,6 +139,41 @@ module Pvcglue
132
139
  end
133
140
  end
134
141
 
142
+ def pg_destroy(dest)
143
+ sql = "\"select 'drop database '||datname||';' "\
144
+ "from pg_database "\
145
+ "where datistemplate=false and datname <> '#{dest.username}' "\
146
+ "and datname <> 'postgres'\""
147
+ # I had to use the double for loop because for whatever reason
148
+ # calling ${line[0]} throws a bad substitution error
149
+ # This is also why I escaped the string with a regex
150
+ bash = "#!/bin/bash\n while read line; do "\
151
+ "s_esc=\"$(echo \"$line\" | sed 's/[^-A-Za-z0-9_]/\\ /g')\"; "\
152
+ "for word in $s_esc; do "\
153
+ "if [ $word = \"drop\" ]; then "\
154
+ "for word in $s_esc; do "\
155
+ "if [ $word != \"drop\" ] && [ $word != \"database\" ]; then "\
156
+ "echo \"$s_esc\"; "\
157
+ "dropdb \"$word\"\; "\
158
+ "fi "\
159
+ "done; "\
160
+ "break; "\
161
+ "fi "\
162
+ "done; "\
163
+ "done < dd.sql; "
164
+
165
+ cmd = "psql #{dest.username} -c "
166
+ cmd += sql
167
+ cmd += " > dd.sql;"
168
+ cmd += bash
169
+ cmd += "rm dd.sql"
170
+ puts cmd
171
+ unless system({"PGPASSWORD" => dest.password}, cmd)
172
+ puts "ERROR:"
173
+ puts $?.inspect
174
+ end
175
+ end
176
+
135
177
  def pg_restore(dest, file_name)
136
178
  Pvcglue.cloud.stage_name == 'production' && destroy_prod?
137
179
  cmd = "pg_restore --verbose --clean --no-acl --no-owner -h #{dest.host} -p #{dest.port}"
@@ -1,3 +1,3 @@
1
1
  module Pvcglue
2
- VERSION = "0.1.12"
2
+ VERSION = "0.1.13"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pvcglue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Lyric
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-22 00:00:00.000000000 Z
11
+ date: 2015-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler