pg-migrator 1.1.1 → 1.2.0
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/lib/pg-migrator/tasks.rb +1 -1
- data/lib/pg-migrator/version.rb +1 -1
- data/lib/pg-migrator.rb +13 -2
- data/spec/migrator_spec.rb +22 -4
- metadata +7 -7
data/lib/pg-migrator/tasks.rb
CHANGED
data/lib/pg-migrator/version.rb
CHANGED
data/lib/pg-migrator.rb
CHANGED
@@ -19,8 +19,19 @@ module PG
|
|
19
19
|
|
20
20
|
def reset
|
21
21
|
@pg.transaction do |conn|
|
22
|
-
conn.exec
|
23
|
-
conn.exec
|
22
|
+
search_path = conn.exec("SHOW search_path").values.first.first
|
23
|
+
current_user = conn.exec("SELECT CURRENT_USER").values.first.first
|
24
|
+
schemas_sql = "SELECT nspname FROM pg_namespace
|
25
|
+
WHERE NOT(nspname LIKE 'pg_%')
|
26
|
+
AND nspname != 'information_schema'
|
27
|
+
"
|
28
|
+
schemas = conn.exec(schemas_sql).values.flatten
|
29
|
+
search_path.split(',').each do |p|
|
30
|
+
p = p.strip.sub /"\$user"/, current_user
|
31
|
+
next unless schemas.include? p
|
32
|
+
conn.exec "DROP SCHEMA #{p} CASCADE;
|
33
|
+
CREATE SCHEMA #{p};"
|
34
|
+
end
|
24
35
|
end
|
25
36
|
migrate_up
|
26
37
|
end
|
data/spec/migrator_spec.rb
CHANGED
@@ -4,6 +4,7 @@ require './lib/pg-migrator'
|
|
4
4
|
describe PG::Migrator do
|
5
5
|
before do
|
6
6
|
@pg = PGconn.connect :dbname => 'pg-migrator'
|
7
|
+
@pg.exec 'SET client_min_messages = warning'
|
7
8
|
logger = Logger.new STDERR
|
8
9
|
logger.level = Logger::FATAL
|
9
10
|
@migrator = PG::Migrator.new({:dbname => 'pg-migrator'}, '/tmp', logger)
|
@@ -14,12 +15,32 @@ describe PG::Migrator do
|
|
14
15
|
end
|
15
16
|
|
16
17
|
describe 'reset' do
|
17
|
-
it '
|
18
|
+
it 'drops tables' do
|
18
19
|
@pg.exec 'create table bar (id int)'
|
19
20
|
@migrator.reset
|
20
21
|
tables = @pg.exec "select tablename from pg_tables where schemaname = 'public'"
|
21
22
|
refute_includes tables.values.flatten, 'bar'
|
22
23
|
end
|
24
|
+
|
25
|
+
it 'drops tables from all schemas in search_path' do
|
26
|
+
@pg.exec "
|
27
|
+
drop schema if exists foo cascade;
|
28
|
+
create schema foo
|
29
|
+
create table bar (id int);
|
30
|
+
drop schema if exists foobar cascade;
|
31
|
+
create schema foobar
|
32
|
+
create table bar (id int);
|
33
|
+
create table public.bar (id int);
|
34
|
+
"
|
35
|
+
pg = PGconn.connect :dbname => 'pg-migrator'
|
36
|
+
pg.exec 'SET search_path TO foo, public'
|
37
|
+
migrator = PG::Migrator.new(pg)
|
38
|
+
migrator.reset
|
39
|
+
migrator.close
|
40
|
+
tables = @pg.exec "select schemaname, tablename from pg_tables where tablename = 'bar'"
|
41
|
+
assert_equal [['foobar', 'bar']], tables.values
|
42
|
+
@pg.exec 'drop schema if exists foobar cascade'
|
43
|
+
end
|
23
44
|
end
|
24
45
|
|
25
46
|
describe 'migrate' do
|
@@ -49,9 +70,6 @@ describe PG::Migrator do
|
|
49
70
|
assert_includes tables.values.flatten, 'foo'
|
50
71
|
end
|
51
72
|
|
52
|
-
it 'executes sql files in order' do
|
53
|
-
end
|
54
|
-
|
55
73
|
it 'adds records to the migration table' do
|
56
74
|
@migrator.migrate_up
|
57
75
|
migrations = @pg.exec "select * from migration"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg-migrator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-11-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pg
|
16
|
-
requirement: &
|
16
|
+
requirement: &70326906755800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70326906755800
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: minitest
|
27
|
-
requirement: &
|
27
|
+
requirement: &70326906755380 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70326906755380
|
36
36
|
description: Rake migration tasks which utilities pure SQL files
|
37
37
|
email:
|
38
38
|
- carl.hoerberg@gmail.com
|
@@ -69,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
69
|
version: '0'
|
70
70
|
requirements: []
|
71
71
|
rubyforge_project:
|
72
|
-
rubygems_version: 1.8.
|
72
|
+
rubygems_version: 1.8.10
|
73
73
|
signing_key:
|
74
74
|
specification_version: 3
|
75
75
|
summary: Drop raw SQL files in db/migrations and add require 'pg-migrator/tasks' to
|