pg_migrate 0.1.7 → 0.1.11
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 +4 -4
- data/.gitignore +34 -34
- data/.gitmodules +3 -3
- data/Gemfile +9 -9
- data/Gemfile.lock +39 -39
- data/LICENSE +21 -21
- data/README.md +33 -33
- data/Rakefile +2 -2
- data/bin/pg_migrate +6 -6
- data/lib/pg_migrate/builder.rb +214 -214
- data/lib/pg_migrate/command_line.rb +242 -242
- data/lib/pg_migrate/config_parser.rb +48 -48
- data/lib/pg_migrate/manifest_reader.rb +102 -102
- data/lib/pg_migrate/migration.rb +11 -11
- data/lib/pg_migrate/migrator.rb +94 -94
- data/lib/pg_migrate/package.rb +152 -152
- data/lib/pg_migrate/package_templates/Gemfile.erb +3 -3
- data/lib/pg_migrate/package_templates/bin/migrate.rb +9 -9
- data/lib/pg_migrate/package_templates/gemspec.erb +21 -21
- data/lib/pg_migrate/package_templates/lib/gem/version.rb +3 -3
- data/lib/pg_migrate/package_templates/lib/gem.rb +12 -12
- data/lib/pg_migrate/props.rb +19 -19
- data/lib/pg_migrate/sql_reader.rb +51 -51
- data/lib/pg_migrate/templates/bootstrap.erb +175 -175
- data/lib/pg_migrate/templates/up.erb +30 -30
- data/lib/pg_migrate/util.rb +73 -73
- data/lib/pg_migrate/version.rb +3 -3
- data/lib/pg_migrate.rb +40 -40
- data/pg_migrate.gemspec +29 -28
- data/spec/database.yml +8 -8
- data/spec/pg_migrate/builder_spec.rb +113 -113
- data/spec/pg_migrate/command_line_spec.rb +53 -53
- data/spec/pg_migrate/config_parser_spec.rb +18 -18
- data/spec/pg_migrate/db_utility.rb +73 -73
- data/spec/pg_migrate/input_manifests/single_manifest/manifest +3 -3
- data/spec/pg_migrate/input_manifests/single_manifest/up/single1.sql +29 -29
- data/spec/pg_migrate/manifest_reader_spec.rb +19 -19
- data/spec/pg_migrate/migrator_spec.rb +68 -68
- data/spec/pg_migrate/package_spec.rb +38 -38
- data/spec/pg_migrate/sql_reader_spec.rb +21 -21
- data/spec/spec_helper.rb +15 -15
- metadata +5 -5
@@ -1,20 +1,20 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ManifestReader do
|
4
|
-
|
5
|
-
before(:all) do
|
6
|
-
@manifest_reader = ManifestReader.new
|
7
|
-
end
|
8
|
-
|
9
|
-
it "load single manifest" do
|
10
|
-
manifest = @manifest_reader.load_input_manifest("spec/pg_migrate/input_manifests/single_manifest")
|
11
|
-
|
12
|
-
manifest.length.should == 1
|
13
|
-
manifest[0].name.should == "single1.sql"
|
14
|
-
end
|
15
|
-
|
16
|
-
it "fail on bad manifest reference" do
|
17
|
-
expect { @manifest_reader.validate_migration_paths('absolutely_nowhere_real', ["migration1"]) }.to raise_exception
|
18
|
-
end
|
19
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ManifestReader do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@manifest_reader = ManifestReader.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "load single manifest" do
|
10
|
+
manifest = @manifest_reader.load_input_manifest("spec/pg_migrate/input_manifests/single_manifest")
|
11
|
+
|
12
|
+
manifest.length.should == 1
|
13
|
+
manifest[0].name.should == "single1.sql"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "fail on bad manifest reference" do
|
17
|
+
expect { @manifest_reader.validate_migration_paths('absolutely_nowhere_real', ["migration1"]) }.to raise_exception
|
18
|
+
end
|
19
|
+
|
20
20
|
end
|
@@ -1,68 +1,68 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Migrator do
|
4
|
-
|
5
|
-
before(:all) do
|
6
|
-
@manifest_reader = ManifestReader.new
|
7
|
-
@sql_reader = SqlReader.new
|
8
|
-
@standard_builder = Builder.new(@manifest_reader, @sql_reader)
|
9
|
-
@standard_migrator = Migrator.new(@manifest_reader, @sql_reader)
|
10
|
-
@dbutil = DbUtility.new
|
11
|
-
end
|
12
|
-
|
13
|
-
it "migrate single_manifest" do
|
14
|
-
|
15
|
-
def migrate_it(output_dir)
|
16
|
-
@dbutil.connect_test_database do |conn|
|
17
|
-
|
18
|
-
standard_migrator = Migrator.new(@manifest_reader, @sql_reader, :pgconn=>conn)
|
19
|
-
standard_migrator.migrate(output_dir)
|
20
|
-
|
21
|
-
conn.transaction do |transaction|
|
22
|
-
transaction.exec("SELECT table_name FROM information_schema.tables WHERE table_name = $1", ["emp"]) do |result|
|
23
|
-
result.ntuples.should == 1
|
24
|
-
result.getvalue(0, 0).should == "emp"
|
25
|
-
end
|
26
|
-
|
27
|
-
pg_migration_id = nil
|
28
|
-
transaction.exec("SELECT * FROM pgmigrate.pg_migrations") do |result|
|
29
|
-
result.ntuples.should == 1
|
30
|
-
result[0]["name"].should == "single1.sql"
|
31
|
-
result[0]["ordinal"].should == "0"
|
32
|
-
pg_migration_id = result[0]["pg_migrate_id"]
|
33
|
-
end
|
34
|
-
pg_migration_id.should_not == nil
|
35
|
-
|
36
|
-
# verify that a database row in pg_migrate was created as side-effect
|
37
|
-
transaction.exec("SELECT * FROM pgmigrate.pg_migrate WHERE id = $1", [pg_migration_id]) do |result|
|
38
|
-
result.ntuples.should == 1
|
39
|
-
result[0]["template_version"].should == "0.1.0"
|
40
|
-
result[0]["builder_version"].should == "pg_migrate_ruby-#{PgMigrate::VERSION}"
|
41
|
-
result[0]["migrator_version"].should == "pg_migrate_ruby-#{PgMigrate::VERSION}"
|
42
|
-
result[0]["database_version"].should_not be nil
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
single_manifest=File.expand_path('spec/pg_migrate/input_manifests/single_manifest')
|
49
|
-
single_manifest = File.join(single_manifest, '.')
|
50
|
-
|
51
|
-
input_dir = nil
|
52
|
-
target = Files.create :path => "target", :timestamp => false do
|
53
|
-
input_dir = dir "input_single_manifest", :src => single_manifest do
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
output_dir = File.join('target', 'output_single_manifest')
|
59
|
-
|
60
|
-
@standard_builder.build(input_dir, output_dir, :force => true)
|
61
|
-
|
62
|
-
@dbutil.create_new_test_database
|
63
|
-
|
64
|
-
migrate_it(output_dir)
|
65
|
-
migrate_it(output_dir)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Migrator do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@manifest_reader = ManifestReader.new
|
7
|
+
@sql_reader = SqlReader.new
|
8
|
+
@standard_builder = Builder.new(@manifest_reader, @sql_reader)
|
9
|
+
@standard_migrator = Migrator.new(@manifest_reader, @sql_reader)
|
10
|
+
@dbutil = DbUtility.new
|
11
|
+
end
|
12
|
+
|
13
|
+
it "migrate single_manifest" do
|
14
|
+
|
15
|
+
def migrate_it(output_dir)
|
16
|
+
@dbutil.connect_test_database do |conn|
|
17
|
+
|
18
|
+
standard_migrator = Migrator.new(@manifest_reader, @sql_reader, :pgconn=>conn)
|
19
|
+
standard_migrator.migrate(output_dir)
|
20
|
+
|
21
|
+
conn.transaction do |transaction|
|
22
|
+
transaction.exec("SELECT table_name FROM information_schema.tables WHERE table_name = $1", ["emp"]) do |result|
|
23
|
+
result.ntuples.should == 1
|
24
|
+
result.getvalue(0, 0).should == "emp"
|
25
|
+
end
|
26
|
+
|
27
|
+
pg_migration_id = nil
|
28
|
+
transaction.exec("SELECT * FROM pgmigrate.pg_migrations") do |result|
|
29
|
+
result.ntuples.should == 1
|
30
|
+
result[0]["name"].should == "single1.sql"
|
31
|
+
result[0]["ordinal"].should == "0"
|
32
|
+
pg_migration_id = result[0]["pg_migrate_id"]
|
33
|
+
end
|
34
|
+
pg_migration_id.should_not == nil
|
35
|
+
|
36
|
+
# verify that a database row in pg_migrate was created as side-effect
|
37
|
+
transaction.exec("SELECT * FROM pgmigrate.pg_migrate WHERE id = $1", [pg_migration_id]) do |result|
|
38
|
+
result.ntuples.should == 1
|
39
|
+
result[0]["template_version"].should == "0.1.0"
|
40
|
+
result[0]["builder_version"].should == "pg_migrate_ruby-#{PgMigrate::VERSION}"
|
41
|
+
result[0]["migrator_version"].should == "pg_migrate_ruby-#{PgMigrate::VERSION}"
|
42
|
+
result[0]["database_version"].should_not be nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
single_manifest=File.expand_path('spec/pg_migrate/input_manifests/single_manifest')
|
49
|
+
single_manifest = File.join(single_manifest, '.')
|
50
|
+
|
51
|
+
input_dir = nil
|
52
|
+
target = Files.create :path => "target", :timestamp => false do
|
53
|
+
input_dir = dir "input_single_manifest", :src => single_manifest do
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
output_dir = File.join('target', 'output_single_manifest')
|
59
|
+
|
60
|
+
@standard_builder.build(input_dir, output_dir, :force => true)
|
61
|
+
|
62
|
+
@dbutil.create_new_test_database
|
63
|
+
|
64
|
+
migrate_it(output_dir)
|
65
|
+
migrate_it(output_dir)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
@@ -1,38 +1,38 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Package do
|
4
|
-
|
5
|
-
before(:all) do
|
6
|
-
@manifest_reader = ManifestReader.new
|
7
|
-
@sql_reader = SqlReader.new
|
8
|
-
@builder = Builder.new(@manifest_reader, @sql_reader)
|
9
|
-
@packager = Package.new(@manifest_reader)
|
10
|
-
@dbutil = DbUtility.new
|
11
|
-
end
|
12
|
-
|
13
|
-
it "package single migration project" do
|
14
|
-
single_manifest=File.expand_path('spec/pg_migrate/input_manifests/single_manifest')
|
15
|
-
single_manifest = File.join(single_manifest, '.')
|
16
|
-
|
17
|
-
input_dir = nil
|
18
|
-
target = Files.create :path => "target", :timestamp => false do
|
19
|
-
input_dir = dir "input_single_manifest", :src => single_manifest do
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
build_output_dir = File.join('target', 'output_single_manifest')
|
25
|
-
package_output_dir = File.join('target', 'package_single_manifest')
|
26
|
-
|
27
|
-
FileUtils.rm_rf(build_output_dir)
|
28
|
-
|
29
|
-
|
30
|
-
# build first
|
31
|
-
@builder.build(input_dir, build_output_dir)
|
32
|
-
|
33
|
-
# then attempt a package
|
34
|
-
@packager.package(build_output_dir, package_output_dir, "crazy_gem", "0.0.1")
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Package do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@manifest_reader = ManifestReader.new
|
7
|
+
@sql_reader = SqlReader.new
|
8
|
+
@builder = Builder.new(@manifest_reader, @sql_reader)
|
9
|
+
@packager = Package.new(@manifest_reader)
|
10
|
+
@dbutil = DbUtility.new
|
11
|
+
end
|
12
|
+
|
13
|
+
it "package single migration project" do
|
14
|
+
single_manifest=File.expand_path('spec/pg_migrate/input_manifests/single_manifest')
|
15
|
+
single_manifest = File.join(single_manifest, '.')
|
16
|
+
|
17
|
+
input_dir = nil
|
18
|
+
target = Files.create :path => "target", :timestamp => false do
|
19
|
+
input_dir = dir "input_single_manifest", :src => single_manifest do
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
build_output_dir = File.join('target', 'output_single_manifest')
|
25
|
+
package_output_dir = File.join('target', 'package_single_manifest')
|
26
|
+
|
27
|
+
FileUtils.rm_rf(build_output_dir)
|
28
|
+
|
29
|
+
|
30
|
+
# build first
|
31
|
+
@builder.build(input_dir, build_output_dir)
|
32
|
+
|
33
|
+
# then attempt a package
|
34
|
+
@packager.package(build_output_dir, package_output_dir, "crazy_gem", "0.0.1")
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -1,22 +1,22 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe SqlReader do
|
4
|
-
|
5
|
-
before(:all) do
|
6
|
-
@sql_reader = SqlReader.new
|
7
|
-
end
|
8
|
-
|
9
|
-
it "load single migration" do
|
10
|
-
migrations = @sql_reader.load_migration("spec/pg_migrate/input_manifests/single_manifest/up/single1.sql")
|
11
|
-
|
12
|
-
migrations.length.should == 7
|
13
|
-
migrations[0] = "select 1"
|
14
|
-
migrations[1] = "select 2"
|
15
|
-
migrations[2] = "select 3"
|
16
|
-
migrations[3] = "create table emp()"
|
17
|
-
migrations[4] = "CREATE FUNCTION clean_emp() RETURNS void AS ' DELETE FROM emp; ' LANGUAGE SQL"
|
18
|
-
migrations[5] = "CREATE FUNCTION clean_emp2() RETURNS void AS 'DELETE FROM emp;' LANGUAGE SQL"
|
19
|
-
migrations[6] = "CREATE FUNCTION populate() RETURNS integer AS $$ DECLARE BEGIN PERFORM select 1; END; $$ LANGUAGE plpgsql"
|
20
|
-
end
|
21
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SqlReader do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@sql_reader = SqlReader.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "load single migration" do
|
10
|
+
migrations = @sql_reader.load_migration("spec/pg_migrate/input_manifests/single_manifest/up/single1.sql")
|
11
|
+
|
12
|
+
migrations.length.should == 7
|
13
|
+
migrations[0] = "select 1"
|
14
|
+
migrations[1] = "select 2"
|
15
|
+
migrations[2] = "select 3"
|
16
|
+
migrations[3] = "create table emp()"
|
17
|
+
migrations[4] = "CREATE FUNCTION clean_emp() RETURNS void AS ' DELETE FROM emp; ' LANGUAGE SQL"
|
18
|
+
migrations[5] = "CREATE FUNCTION clean_emp2() RETURNS void AS 'DELETE FROM emp;' LANGUAGE SQL"
|
19
|
+
migrations[6] = "CREATE FUNCTION populate() RETURNS integer AS $$ DECLARE BEGIN PERFORM select 1; END; $$ LANGUAGE plpgsql"
|
20
|
+
end
|
21
|
+
|
22
22
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
require 'logging'
|
2
|
-
|
3
|
-
# bootstrap logger
|
4
|
-
Logging.logger.root.level = :debug
|
5
|
-
Logging.logger.root.appenders = Logging.appenders.stdout
|
6
|
-
|
7
|
-
require 'pg_migrate'
|
8
|
-
require 'pg_migrate/db_utility'
|
9
|
-
require 'files'
|
10
|
-
require 'fileutils'
|
11
|
-
|
12
|
-
target = File.join(File.dirname(__FILE__), '..', 'target')
|
13
|
-
FileUtils::rm_r(target, :force => true)
|
14
|
-
|
15
|
-
include PgMigrate
|
1
|
+
require 'logging'
|
2
|
+
|
3
|
+
# bootstrap logger
|
4
|
+
Logging.logger.root.level = :debug
|
5
|
+
Logging.logger.root.appenders = Logging.appenders.stdout
|
6
|
+
|
7
|
+
require 'pg_migrate'
|
8
|
+
require 'pg_migrate/db_utility'
|
9
|
+
require 'files'
|
10
|
+
require 'fileutils'
|
11
|
+
|
12
|
+
target = File.join(File.dirname(__FILE__), '..', 'target')
|
13
|
+
FileUtils::rm_r(target, :force => true)
|
14
|
+
|
15
|
+
include PgMigrate
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_migrate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seth Call
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-05
|
11
|
+
date: 2013-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logging
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.15.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.15.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: thor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
119
|
version: '0'
|
120
120
|
requirements: []
|
121
121
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.0.
|
122
|
+
rubygems_version: 2.0.2
|
123
123
|
signing_key:
|
124
124
|
specification_version: 4
|
125
125
|
summary: Create migration scripts in raw SQL that work regardless if they are run
|