dm-migrations 0.9.11 → 0.10.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/{History.txt → History.rdoc} +4 -6
- data/Manifest.txt +12 -12
- data/{README.txt → README.rdoc} +0 -0
- data/Rakefile +2 -3
- data/db/migrations/1_create_people_table.rb +3 -3
- data/examples/sample_migration.rb +7 -10
- data/examples/sample_migration_spec.rb +6 -2
- data/lib/dm-migrations.rb +1 -1
- data/lib/{migration.rb → dm-migrations/migration.rb} +5 -7
- data/lib/{migration_runner.rb → dm-migrations/migration_runner.rb} +4 -4
- data/lib/dm-migrations/sql.rb +5 -0
- data/lib/{sql → dm-migrations/sql}/column.rb +0 -4
- data/lib/{sql → dm-migrations/sql}/mysql.rb +5 -8
- data/lib/{sql → dm-migrations/sql}/postgresql.rb +7 -11
- data/lib/{sql → dm-migrations/sql}/sqlite3.rb +3 -5
- data/lib/{sql → dm-migrations/sql}/table.rb +1 -5
- data/lib/{sql → dm-migrations/sql}/table_creator.rb +28 -15
- data/lib/{sql → dm-migrations/sql}/table_modifier.rb +2 -4
- data/lib/dm-migrations/version.rb +1 -1
- data/lib/spec/example/migration_example_group.rb +2 -2
- data/lib/spec/matchers/migration_matchers.rb +0 -1
- data/spec/integration/migration_runner_spec.rb +1 -2
- data/spec/integration/migration_spec.rb +1 -2
- data/spec/integration/sql_spec.rb +11 -7
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +10 -6
- data/spec/unit/migration_spec.rb +11 -14
- data/spec/unit/sql/column_spec.rb +1 -4
- data/spec/unit/sql/postgresql_spec.rb +1 -4
- data/spec/unit/sql/sqlite3_extensions_spec.rb +1 -4
- data/spec/unit/sql/table_creator_spec.rb +7 -7
- data/spec/unit/sql/table_modifier_spec.rb +3 -6
- data/spec/unit/sql/table_spec.rb +1 -4
- data/spec/unit/sql_spec.rb +1 -4
- data/tasks/db.rb +1 -1
- data/tasks/install.rb +1 -1
- data/tasks/spec.rb +4 -4
- metadata +24 -31
- data/lib/sql.rb +0 -10
@@ -1,12 +1,10 @@
|
|
1
|
-
=== 0.
|
2
|
-
|
3
|
-
* 1 minor enhancement:
|
1
|
+
=== 0.10.0 / 2009-10-15
|
4
2
|
|
5
|
-
|
3
|
+
* Updated to work with dm-core 0.10.0
|
6
4
|
|
7
|
-
|
5
|
+
=== 0.9.11 / 2009-03-29
|
8
6
|
|
9
|
-
|
7
|
+
* No changes this version
|
10
8
|
|
11
9
|
=== 0.9.10 / 2009-01-19
|
12
10
|
|
data/Manifest.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
History.
|
1
|
+
History.rdoc
|
2
2
|
LICENSE
|
3
3
|
Manifest.txt
|
4
|
-
README.
|
4
|
+
README.rdoc
|
5
5
|
Rakefile
|
6
6
|
TODO
|
7
7
|
db/migrations/1_create_people_table.rb
|
@@ -10,19 +10,19 @@ db/migrations/config.rb
|
|
10
10
|
examples/sample_migration.rb
|
11
11
|
examples/sample_migration_spec.rb
|
12
12
|
lib/dm-migrations.rb
|
13
|
+
lib/dm-migrations/migration.rb
|
14
|
+
lib/dm-migrations/migration_runner.rb
|
15
|
+
lib/dm-migrations/sql.rb
|
16
|
+
lib/dm-migrations/sql/column.rb
|
17
|
+
lib/dm-migrations/sql/mysql.rb
|
18
|
+
lib/dm-migrations/sql/postgresql.rb
|
19
|
+
lib/dm-migrations/sql/sqlite3.rb
|
20
|
+
lib/dm-migrations/sql/table.rb
|
21
|
+
lib/dm-migrations/sql/table_creator.rb
|
22
|
+
lib/dm-migrations/sql/table_modifier.rb
|
13
23
|
lib/dm-migrations/version.rb
|
14
|
-
lib/migration.rb
|
15
|
-
lib/migration_runner.rb
|
16
24
|
lib/spec/example/migration_example_group.rb
|
17
25
|
lib/spec/matchers/migration_matchers.rb
|
18
|
-
lib/sql.rb
|
19
|
-
lib/sql/column.rb
|
20
|
-
lib/sql/mysql.rb
|
21
|
-
lib/sql/postgresql.rb
|
22
|
-
lib/sql/sqlite3.rb
|
23
|
-
lib/sql/table.rb
|
24
|
-
lib/sql/table_creator.rb
|
25
|
-
lib/sql/table_modifier.rb
|
26
26
|
spec/integration/migration_runner_spec.rb
|
27
27
|
spec/integration/migration_spec.rb
|
28
28
|
spec/integration/sql_spec.rb
|
data/{README.txt → README.rdoc}
RENAMED
File without changes
|
data/Rakefile
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'pathname'
|
2
|
-
require 'rubygems'
|
3
2
|
|
4
3
|
ROOT = Pathname(__FILE__).dirname.expand_path
|
5
4
|
JRUBY = RUBY_PLATFORM =~ /java/
|
@@ -14,10 +13,10 @@ GEM_NAME = 'dm-migrations'
|
|
14
13
|
GEM_VERSION = DataMapper::Migration::VERSION
|
15
14
|
GEM_DEPENDENCIES = [['dm-core', GEM_VERSION]]
|
16
15
|
GEM_CLEAN = %w[ log pkg coverage ]
|
17
|
-
GEM_EXTRAS = { :has_rdoc => true, :extra_rdoc_files => %w[ README.
|
16
|
+
GEM_EXTRAS = { :has_rdoc => true, :extra_rdoc_files => %w[ README.rdoc LICENSE TODO History.rdoc ] }
|
18
17
|
|
19
18
|
PROJECT_NAME = 'datamapper'
|
20
|
-
PROJECT_URL = "http://github.com/
|
19
|
+
PROJECT_URL = "http://github.com/datamapper/dm-more/tree/master/#{GEM_NAME}"
|
21
20
|
PROJECT_DESCRIPTION = PROJECT_SUMMARY = 'DataMapper plugin for writing and speccing migrations'
|
22
21
|
|
23
22
|
[ ROOT, ROOT.parent ].each do |dir|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
migration 1, :create_people_table do
|
2
2
|
up do
|
3
3
|
create_table :people do
|
4
|
-
column :id,
|
5
|
-
column :name,
|
6
|
-
column :age,
|
4
|
+
column :id, Integer, :serial => true
|
5
|
+
column :name, String, :size => 50
|
6
|
+
column :age, Integer
|
7
7
|
end
|
8
8
|
end
|
9
9
|
down do
|
@@ -1,9 +1,6 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
|
4
|
-
# DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/migration_test.db")
|
5
|
-
DataMapper.setup(:default, "postgres://localhost/migration_test")
|
6
|
-
# DataMapper.setup(:default, "mysql://localhost/migration_test")
|
1
|
+
require 'dm-migrations/migration_runner'
|
2
|
+
|
3
|
+
DataMapper.setup(:default, "sqlite3::memory")
|
7
4
|
|
8
5
|
DataMapper::Logger.new(STDOUT, :debug)
|
9
6
|
DataMapper.logger.debug( "Starting Migration" )
|
@@ -11,9 +8,9 @@ DataMapper.logger.debug( "Starting Migration" )
|
|
11
8
|
migration 1, :create_people_table do
|
12
9
|
up do
|
13
10
|
create_table :people do
|
14
|
-
column :id,
|
15
|
-
column :name,
|
16
|
-
column :age,
|
11
|
+
column :id, Integer, :serial => true
|
12
|
+
column :name, String, :size => 50
|
13
|
+
column :age, Integer
|
17
14
|
end
|
18
15
|
end
|
19
16
|
down do
|
@@ -41,7 +38,7 @@ end
|
|
41
38
|
# class Person
|
42
39
|
# include DataMapper::Resource
|
43
40
|
#
|
44
|
-
# property :id,
|
41
|
+
# property :id, Serial
|
45
42
|
# property :name, String, :size => 50
|
46
43
|
# property :age, Integer
|
47
44
|
# property :dob, DateTime, :default => Time.now
|
@@ -1,5 +1,9 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
dir = Pathname(__FILE__).dirname.expand_path
|
4
|
+
|
5
|
+
require dir + 'sample_migration'
|
6
|
+
require dir + '../lib/spec/example/migration_example_group'
|
3
7
|
|
4
8
|
describe :create_people_table, :type => :migration do
|
5
9
|
|
data/lib/dm-migrations.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require
|
1
|
+
require 'dm-migrations/migration'
|
@@ -1,8 +1,6 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
gem 'dm-core', '0.9.11'
|
3
|
-
require 'dm-core'
|
4
1
|
require 'benchmark'
|
5
|
-
|
2
|
+
|
3
|
+
require 'dm-migrations/sql'
|
6
4
|
|
7
5
|
module DataMapper
|
8
6
|
class DuplicateMigrationNameError < StandardError
|
@@ -91,7 +89,7 @@ module DataMapper
|
|
91
89
|
end
|
92
90
|
|
93
91
|
def drop_table(table_name, opts = {})
|
94
|
-
execute "DROP TABLE #{@adapter.send(:
|
92
|
+
execute "DROP TABLE #{@adapter.send(:quote_name, table_name.to_s)}"
|
95
93
|
end
|
96
94
|
|
97
95
|
def modify_table(table_name, opts = {}, &block)
|
@@ -206,12 +204,12 @@ module DataMapper
|
|
206
204
|
|
207
205
|
def quote_table_name(table_name)
|
208
206
|
# TODO: Fix this for 1.9 - can't use this hack to access a private method
|
209
|
-
@adapter.send(:
|
207
|
+
@adapter.send(:quote_name, table_name.to_s)
|
210
208
|
end
|
211
209
|
|
212
210
|
def quote_column_name(column_name)
|
213
211
|
# TODO: Fix this for 1.9 - can't use this hack to access a private method
|
214
|
-
@adapter.send(:
|
212
|
+
@adapter.send(:quote_name, column_name.to_s)
|
215
213
|
end
|
216
214
|
end
|
217
215
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'dm-migrations/migration'
|
2
2
|
|
3
3
|
module DataMapper
|
4
4
|
module MigrationRunner
|
@@ -26,9 +26,9 @@ module DataMapper
|
|
26
26
|
# migration( 1, :create_people_table ) do
|
27
27
|
# up do
|
28
28
|
# create_table :people do
|
29
|
-
# column :id,
|
30
|
-
# column :name,
|
31
|
-
# column :age,
|
29
|
+
# column :id, Integer, :serial => true
|
30
|
+
# column :name, String, :size => 50
|
31
|
+
# column :age, Integer
|
32
32
|
# end
|
33
33
|
# end
|
34
34
|
# down do
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'dm-migrations/sql/table'
|
2
2
|
|
3
3
|
module SQL
|
4
4
|
module Mysql
|
@@ -21,14 +21,13 @@ module SQL
|
|
21
21
|
true
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
25
|
-
"
|
24
|
+
def table_options
|
25
|
+
" ENGINE = InnoDB CHARACTER SET #{character_set} COLLATE #{collation}"
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
|
-
def property_schema_statement(schema)
|
28
|
+
def property_schema_statement(connection, schema)
|
30
29
|
if supports_serial? && schema[:serial]
|
31
|
-
statement = "#{schema[:quote_column_name]}
|
30
|
+
statement = "#{schema[:quote_column_name]} SERIAL PRIMARY KEY"
|
32
31
|
else
|
33
32
|
super
|
34
33
|
end
|
@@ -50,7 +49,5 @@ module SQL
|
|
50
49
|
@not_null = col_struct.notnull == 0
|
51
50
|
end
|
52
51
|
end
|
53
|
-
|
54
|
-
|
55
52
|
end
|
56
53
|
end
|
@@ -10,18 +10,18 @@ module SQL
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def recreate_database
|
13
|
-
execute
|
14
|
-
execute
|
15
|
-
execute
|
13
|
+
execute 'DROP SCHEMA IF EXISTS test CASCADE'
|
14
|
+
execute 'CREATE SCHEMA test'
|
15
|
+
execute 'SET search_path TO test'
|
16
16
|
end
|
17
17
|
|
18
18
|
def supports_serial?
|
19
19
|
true
|
20
20
|
end
|
21
21
|
|
22
|
-
def property_schema_statement(schema)
|
22
|
+
def property_schema_statement(connection, schema)
|
23
23
|
if supports_serial? && schema[:serial]
|
24
|
-
statement = "#{schema[:quote_column_name]}
|
24
|
+
statement = "#{schema[:quote_column_name]} SERIAL PRIMARY KEY"
|
25
25
|
else
|
26
26
|
statement = super
|
27
27
|
if schema.has_key?(:sequence_name)
|
@@ -32,8 +32,8 @@ module SQL
|
|
32
32
|
statement
|
33
33
|
end
|
34
34
|
|
35
|
-
def
|
36
|
-
|
35
|
+
def table_options
|
36
|
+
''
|
37
37
|
end
|
38
38
|
|
39
39
|
class Table < SQL::Table
|
@@ -64,9 +64,7 @@ module SQL
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
67
|
-
|
68
67
|
end
|
69
|
-
|
70
68
|
end
|
71
69
|
|
72
70
|
class Column < SQL::Column
|
@@ -75,8 +73,6 @@ module SQL
|
|
75
73
|
|
76
74
|
@not_null = col_struct.is_nullable != "YES"
|
77
75
|
end
|
78
|
-
|
79
76
|
end
|
80
|
-
|
81
77
|
end
|
82
78
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'dm-migrations/sql/table'
|
2
2
|
|
3
3
|
module SQL
|
4
4
|
module Sqlite3
|
@@ -17,8 +17,8 @@ module SQL
|
|
17
17
|
# do nothing, sqlite will automatically create the database file
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
21
|
-
|
20
|
+
def table_options
|
21
|
+
''
|
22
22
|
end
|
23
23
|
|
24
24
|
def supports_serial?
|
@@ -41,7 +41,5 @@ module SQL
|
|
41
41
|
@not_null = col_struct.notnull == 0
|
42
42
|
end
|
43
43
|
end
|
44
|
-
|
45
|
-
|
46
44
|
end
|
47
45
|
end
|
@@ -1,9 +1,7 @@
|
|
1
|
-
require
|
1
|
+
require 'dm-migrations/sql/column'
|
2
2
|
|
3
3
|
module SQL
|
4
|
-
|
5
4
|
class Table
|
6
|
-
|
7
5
|
attr_accessor :name, :columns
|
8
6
|
|
9
7
|
def to_s
|
@@ -13,7 +11,5 @@ module SQL
|
|
13
11
|
def column(column_name)
|
14
12
|
@columns.select { |c| c.name == column_name.to_s }.first
|
15
13
|
end
|
16
|
-
|
17
14
|
end
|
18
|
-
|
19
15
|
end
|
@@ -13,7 +13,7 @@ module SQL
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def quoted_table_name
|
16
|
-
@adapter.send(:
|
16
|
+
@adapter.send(:quote_name, table_name)
|
17
17
|
end
|
18
18
|
|
19
19
|
def column(name, type, opts = {})
|
@@ -21,7 +21,7 @@ module SQL
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def to_sql
|
24
|
-
"#{
|
24
|
+
"CREATE TABLE #{quoted_table_name} (#{@columns.map{ |c| c.to_sql }.join(', ')})#{@adapter.table_options}"
|
25
25
|
end
|
26
26
|
|
27
27
|
# A helper for using the native NOW() SQL function in a default
|
@@ -55,29 +55,42 @@ module SQL
|
|
55
55
|
@type = build_type(type)
|
56
56
|
end
|
57
57
|
|
58
|
+
def to_sql
|
59
|
+
type
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
58
64
|
def build_type(type_class)
|
59
|
-
schema = {:name => @name, :quote_column_name => quoted_name}.merge(@opts)
|
60
|
-
|
61
|
-
unless schema.
|
62
|
-
schema[:nullable
|
65
|
+
schema = { :name => @name, :quote_column_name => quoted_name }.merge(@opts)
|
66
|
+
|
67
|
+
unless schema.key?(:nullable)
|
68
|
+
schema[:nullable] = !schema[:not_null]
|
63
69
|
end
|
64
|
-
|
70
|
+
|
71
|
+
schema[:length] ||= schema.delete(:size) if schema.key?(:size)
|
72
|
+
|
73
|
+
if type_class.kind_of?(String)
|
65
74
|
schema[:primitive] = type_class
|
66
75
|
else
|
67
|
-
|
76
|
+
primitive = type_class.respond_to?(:primitive) ? type_class.primitive : type_class
|
77
|
+
options = @adapter.class.type_map[primitive].dup
|
78
|
+
|
79
|
+
if type_class.respond_to?(:options)
|
80
|
+
options.update(type_class.options)
|
81
|
+
end
|
82
|
+
|
83
|
+
schema = options.update(schema)
|
68
84
|
end
|
69
|
-
@adapter.property_schema_statement(schema)
|
70
|
-
end
|
71
85
|
|
72
|
-
|
73
|
-
|
86
|
+
@adapter.send(:with_connection) do |connection|
|
87
|
+
@adapter.property_schema_statement(connection, schema)
|
88
|
+
end
|
74
89
|
end
|
75
90
|
|
76
91
|
def quoted_name
|
77
|
-
@adapter.send(:
|
92
|
+
@adapter.send(:quote_name, name)
|
78
93
|
end
|
79
94
|
end
|
80
|
-
|
81
95
|
end
|
82
|
-
|
83
96
|
end
|
@@ -41,13 +41,11 @@ module SQL
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def quote_column_name(name)
|
44
|
-
@adapter.send(:
|
44
|
+
@adapter.send(:quote_name, name.to_s)
|
45
45
|
end
|
46
46
|
|
47
47
|
def quoted_table_name
|
48
|
-
@adapter.send(:
|
48
|
+
@adapter.send(:quote_name, table_name)
|
49
49
|
end
|
50
|
-
|
51
50
|
end
|
52
|
-
|
53
51
|
end
|
@@ -1,8 +1,12 @@
|
|
1
|
-
require '
|
2
|
-
require Pathname(__FILE__).dirname.expand_path.parent + 'spec_helper'
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
3
|
ADAPTERS.each do |adapter|
|
5
4
|
describe "Using Adapter #{adapter}," do
|
5
|
+
|
6
|
+
def repository(*args)
|
7
|
+
DataMapper.repository(*args)
|
8
|
+
end
|
9
|
+
|
6
10
|
describe DataMapper::Migration, "#create_table helper" do
|
7
11
|
before :all do
|
8
12
|
case adapter
|
@@ -14,8 +18,8 @@ ADAPTERS.each do |adapter|
|
|
14
18
|
|
15
19
|
before do
|
16
20
|
@creator = DataMapper::Migration::TableCreator.new(repository(adapter).adapter, :people) do
|
17
|
-
column :id,
|
18
|
-
column :name,
|
21
|
+
column :id, DataMapper::Types::Serial
|
22
|
+
column :name, 'VARCHAR(50)', :nullable => false
|
19
23
|
column :long_string, String, :size => 200
|
20
24
|
end
|
21
25
|
end
|
@@ -62,15 +66,15 @@ ADAPTERS.each do |adapter|
|
|
62
66
|
when :mysql
|
63
67
|
it "should create an InnoDB database for MySQL" do
|
64
68
|
#can't get an exact == comparison here because character set and collation may differ per connection
|
65
|
-
@creator.to_sql.should match(/^CREATE TABLE `people`
|
69
|
+
@creator.to_sql.should match(/^CREATE TABLE `people` \(`id` SERIAL PRIMARY KEY, `name` VARCHAR\(50\) NOT NULL, `long_string` VARCHAR\(200\)\) ENGINE = InnoDB CHARACTER SET \w+ COLLATE \w+\z/)
|
66
70
|
end
|
67
71
|
when :postgres
|
68
72
|
it "should output a CREATE TABLE statement when sent #to_sql" do
|
69
|
-
@creator.to_sql.should == %q{CREATE TABLE "people" ("id"
|
73
|
+
@creator.to_sql.should == %q{CREATE TABLE "people" ("id" SERIAL PRIMARY KEY, "name" VARCHAR(50) NOT NULL, "long_string" VARCHAR(200))}
|
70
74
|
end
|
71
75
|
when :sqlite3
|
72
76
|
it "should output a CREATE TABLE statement when sent #to_sql" do
|
73
|
-
@creator.to_sql.should == %q{CREATE TABLE "people" ("id" INTEGER PRIMARY KEY AUTOINCREMENT, "name"
|
77
|
+
@creator.to_sql.should == %q{CREATE TABLE "people" ("id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" VARCHAR(50) NOT NULL, "long_string" VARCHAR(200))}
|
74
78
|
end
|
75
79
|
end
|
76
80
|
end
|
data/spec/spec.opts
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,15 @@
|
|
1
|
-
require 'pathname'
|
2
1
|
require 'rubygems'
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
# use local dm-core if running from a typical dev checkout.
|
4
|
+
lib = File.join('..', '..', 'dm-core', 'lib')
|
5
|
+
$LOAD_PATH.unshift(lib) if File.directory?(lib)
|
6
|
+
require 'dm-core'
|
6
7
|
|
7
|
-
|
8
|
-
|
8
|
+
# Support running specs with 'rake spec' and 'spec'
|
9
|
+
$LOAD_PATH.unshift('lib') unless $LOAD_PATH.include?('lib')
|
10
|
+
|
11
|
+
require 'dm-migrations'
|
12
|
+
require 'dm-migrations/migration_runner'
|
9
13
|
|
10
14
|
ADAPTERS = []
|
11
15
|
def load_driver(name, default_uri)
|
@@ -20,7 +24,7 @@ def load_driver(name, default_uri)
|
|
20
24
|
end
|
21
25
|
end
|
22
26
|
|
23
|
-
|
27
|
+
ENV['ADAPTER'] ||= 'sqlite3'
|
24
28
|
|
25
29
|
load_driver(:sqlite3, 'sqlite3::memory:')
|
26
30
|
load_driver(:mysql, 'mysql://localhost/dm_core_test')
|
data/spec/unit/migration_spec.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
require '
|
2
|
-
require Pathname(__FILE__).dirname + '../spec_helper'
|
3
|
-
|
4
|
-
require Pathname(__FILE__).dirname + '../../lib/migration'
|
1
|
+
require 'spec_helper'
|
5
2
|
|
6
3
|
describe 'Migration' do
|
7
4
|
|
@@ -214,12 +211,12 @@ describe 'Migration' do
|
|
214
211
|
|
215
212
|
describe '#drop_table' do
|
216
213
|
it 'should quote the table name' do
|
217
|
-
@adapter.should_receive(:
|
214
|
+
@adapter.should_receive(:quote_name).with('users')
|
218
215
|
@m.drop_table :users
|
219
216
|
end
|
220
217
|
|
221
218
|
it 'should execute the DROP TABLE sql for the table' do
|
222
|
-
@adapter.stub!(:
|
219
|
+
@adapter.stub!(:quote_name).and_return("'users'")
|
223
220
|
@m.should_receive(:execute).with(%{DROP TABLE 'users'})
|
224
221
|
@m.drop_table :users
|
225
222
|
end
|
@@ -326,21 +323,21 @@ describe 'Migration' do
|
|
326
323
|
describe 'working with the migration_info table' do
|
327
324
|
before do
|
328
325
|
@adapter.stub!(:storage_exists?).and_return(true)
|
329
|
-
|
330
|
-
@adapter.stub!(:
|
326
|
+
# --- Please remove stubs ---
|
327
|
+
@adapter.stub!(:quote_name).and_return { |name| "'#{name}'" }
|
331
328
|
end
|
332
329
|
|
333
330
|
describe '#update_migration_info' do
|
334
331
|
it 'should add a record of the migration' do
|
335
332
|
@m.should_receive(:execute).with(
|
336
|
-
%Q{INSERT INTO '
|
333
|
+
%Q{INSERT INTO 'migration_info' ('migration_name') VALUES ('do_nothing')}
|
337
334
|
)
|
338
335
|
@m.update_migration_info(:up)
|
339
336
|
end
|
340
337
|
|
341
338
|
it 'should remove the record of the migration' do
|
342
339
|
@m.should_receive(:execute).with(
|
343
|
-
%Q{DELETE FROM '
|
340
|
+
%Q{DELETE FROM 'migration_info' WHERE 'migration_name' = 'do_nothing'}
|
344
341
|
)
|
345
342
|
@m.update_migration_info(:down)
|
346
343
|
end
|
@@ -355,7 +352,7 @@ describe 'Migration' do
|
|
355
352
|
it 'should create the migration info table' do
|
356
353
|
@m.should_receive(:migration_info_table_exists?).and_return(false)
|
357
354
|
@m.should_receive(:execute).with(
|
358
|
-
%Q{CREATE TABLE '
|
355
|
+
%Q{CREATE TABLE 'migration_info' ('migration_name' VARCHAR(255) UNIQUE)}
|
359
356
|
)
|
360
357
|
@m.create_migration_info_table_if_needed
|
361
358
|
end
|
@@ -379,7 +376,7 @@ describe 'Migration' do
|
|
379
376
|
describe '#migration_record' do
|
380
377
|
it 'should query for the migration' do
|
381
378
|
@adapter.should_receive(:query).with(
|
382
|
-
%Q{SELECT 'migration_name' FROM '
|
379
|
+
%Q{SELECT 'migration_name' FROM 'migration_info' WHERE 'migration_name' = 'do_nothing'}
|
383
380
|
)
|
384
381
|
@m.migration_record
|
385
382
|
end
|
@@ -429,12 +426,12 @@ describe 'Migration' do
|
|
429
426
|
end
|
430
427
|
|
431
428
|
it 'should have the adapter quote the migration_info table' do
|
432
|
-
@adapter.should_receive(:
|
429
|
+
@adapter.should_receive(:quote_name).with('migration_info').and_return("'migration_info'")
|
433
430
|
@m.migration_info_table.should == "'migration_info'"
|
434
431
|
end
|
435
432
|
|
436
433
|
it 'should have a quoted migration_name_column' do
|
437
|
-
@adapter.should_receive(:
|
434
|
+
@adapter.should_receive(:quote_name).with('migration_name').and_return("'migration_name'")
|
438
435
|
@m.migration_name_column.should == "'migration_name'"
|
439
436
|
end
|
440
437
|
|
@@ -1,13 +1,10 @@
|
|
1
|
-
require '
|
2
|
-
require Pathname(__FILE__).dirname + '../../spec_helper'
|
3
|
-
|
4
|
-
require Pathname(__FILE__).dirname + '../../../lib/sql/table_creator'
|
1
|
+
require 'spec_helper'
|
5
2
|
|
6
3
|
describe 'SQL module' do
|
7
4
|
describe 'TableCreator' do
|
8
5
|
before do
|
9
6
|
@adapter = mock('adapter')
|
10
|
-
@adapter.stub!(:
|
7
|
+
@adapter.stub!(:quote_name).and_return(%{'users'})
|
11
8
|
@tc = SQL::TableCreator.new(@adapter, 'users') { }
|
12
9
|
end
|
13
10
|
|
@@ -43,7 +40,7 @@ describe 'SQL module' do
|
|
43
40
|
end
|
44
41
|
|
45
42
|
it 'should use the adapter to quote the table name' do
|
46
|
-
@adapter.should_receive(:
|
43
|
+
@adapter.should_receive(:quote_name).with('users').and_return(%{'users'})
|
47
44
|
@tc.quoted_table_name.should == %{'users'}
|
48
45
|
end
|
49
46
|
|
@@ -55,16 +52,19 @@ describe 'SQL module' do
|
|
55
52
|
end
|
56
53
|
|
57
54
|
it 'should output an SQL CREATE statement to build itself' do
|
58
|
-
@adapter.
|
55
|
+
@adapter.stub!(:table_options).and_return("")
|
59
56
|
@tc.to_sql.should ==
|
60
57
|
%{CREATE TABLE 'users' ()}
|
61
58
|
end
|
62
59
|
|
63
60
|
describe 'Column' do
|
64
61
|
before do
|
62
|
+
connection = mock('Connection')
|
63
|
+
|
65
64
|
@adapter.stub!(:quote_column_name).and_return(%{'id'})
|
66
65
|
@adapter.class.stub!(:type_map).and_return(Integer => {:type => 'int'})
|
67
66
|
@adapter.stub!(:property_schema_statement).and_return("SOME SQL")
|
67
|
+
@adapter.stub!(:with_connection).and_yield(connection)
|
68
68
|
@c = SQL::TableCreator::Column.new(@adapter, 'id', Integer, :serial => true)
|
69
69
|
end
|
70
70
|
|
@@ -1,13 +1,10 @@
|
|
1
|
-
require '
|
2
|
-
require Pathname(__FILE__).dirname + '../../spec_helper'
|
3
|
-
|
4
|
-
require Pathname(__FILE__).dirname + '../../../lib/sql/table_modifier'
|
1
|
+
require 'spec_helper'
|
5
2
|
|
6
3
|
describe 'SQL module' do
|
7
4
|
describe 'TableModifier' do
|
8
5
|
before do
|
9
6
|
@adapter = mock('adapter')
|
10
|
-
@adapter.stub!(:
|
7
|
+
@adapter.stub!(:quote_name).and_return(%{'users'})
|
11
8
|
@tc = SQL::TableModifier.new(@adapter, :users) { }
|
12
9
|
end
|
13
10
|
|
@@ -43,7 +40,7 @@ describe 'SQL module' do
|
|
43
40
|
end
|
44
41
|
|
45
42
|
it 'should use the adapter to quote the table name' do
|
46
|
-
@adapter.should_receive(:
|
43
|
+
@adapter.should_receive(:quote_name).with('users').and_return(%{'users'})
|
47
44
|
@tc.quoted_table_name.should == %{'users'}
|
48
45
|
end
|
49
46
|
|
data/spec/unit/sql/table_spec.rb
CHANGED
data/spec/unit/sql_spec.rb
CHANGED
data/tasks/db.rb
CHANGED
@@ -12,7 +12,7 @@ namespace :db do
|
|
12
12
|
# set DIRECTION to migrate down
|
13
13
|
desc "Run your system's migrations"
|
14
14
|
task :migrate => [:setup_migration_dir] do
|
15
|
-
require
|
15
|
+
require 'dm-migrations/migration_runner.rb'
|
16
16
|
require File.expand_path(File.join(MIGRATION_DIR, "config.rb"))
|
17
17
|
|
18
18
|
Dir[File.join(MIGRATION_DIR, "*.rb")].each { |file| require file }
|
data/tasks/install.rb
CHANGED
@@ -4,7 +4,7 @@ end
|
|
4
4
|
|
5
5
|
desc "Install #{GEM_NAME} #{GEM_VERSION}"
|
6
6
|
task :install => [ :package ] do
|
7
|
-
sudo_gem "install
|
7
|
+
sudo_gem "install pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources"
|
8
8
|
end
|
9
9
|
|
10
10
|
desc "Uninstall #{GEM_NAME} #{GEM_VERSION}"
|
data/tasks/spec.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
begin
|
2
|
-
gem 'rspec', '~>1.2'
|
3
|
-
require 'spec'
|
4
2
|
require 'spec/rake/spectask'
|
5
3
|
|
6
4
|
task :default => [ :spec ]
|
@@ -8,16 +6,18 @@ begin
|
|
8
6
|
desc 'Run specifications'
|
9
7
|
Spec::Rake::SpecTask.new(:spec) do |t|
|
10
8
|
t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
|
11
|
-
t.
|
9
|
+
t.libs << 'lib' << 'spec' # needed for CI rake spec task, duplicated in spec_helper
|
12
10
|
|
13
11
|
begin
|
14
|
-
|
12
|
+
require 'rcov'
|
15
13
|
t.rcov = JRUBY ? false : (ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true)
|
16
14
|
t.rcov_opts << '--exclude' << 'spec'
|
17
15
|
t.rcov_opts << '--text-summary'
|
18
16
|
t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
|
19
17
|
rescue LoadError
|
20
18
|
# rcov not installed
|
19
|
+
rescue SyntaxError
|
20
|
+
# rcov syntax invalid
|
21
21
|
end
|
22
22
|
end
|
23
23
|
rescue LoadError
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-migrations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Sadauskas
|
@@ -9,19 +9,10 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-09-16 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
name: dm-core
|
17
|
-
type: :runtime
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - "="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.9.11
|
24
|
-
version:
|
14
|
+
dependencies: []
|
15
|
+
|
25
16
|
description: DataMapper plugin for writing and speccing migrations
|
26
17
|
email:
|
27
18
|
- psadauskas [a] gmail [d] com
|
@@ -30,15 +21,15 @@ executables: []
|
|
30
21
|
extensions: []
|
31
22
|
|
32
23
|
extra_rdoc_files:
|
33
|
-
- README.
|
24
|
+
- README.rdoc
|
34
25
|
- LICENSE
|
35
26
|
- TODO
|
36
|
-
- History.
|
27
|
+
- History.rdoc
|
37
28
|
files:
|
38
|
-
- History.
|
29
|
+
- History.rdoc
|
39
30
|
- LICENSE
|
40
31
|
- Manifest.txt
|
41
|
-
- README.
|
32
|
+
- README.rdoc
|
42
33
|
- Rakefile
|
43
34
|
- TODO
|
44
35
|
- db/migrations/1_create_people_table.rb
|
@@ -47,19 +38,19 @@ files:
|
|
47
38
|
- examples/sample_migration.rb
|
48
39
|
- examples/sample_migration_spec.rb
|
49
40
|
- lib/dm-migrations.rb
|
41
|
+
- lib/dm-migrations/migration.rb
|
42
|
+
- lib/dm-migrations/migration_runner.rb
|
43
|
+
- lib/dm-migrations/sql.rb
|
44
|
+
- lib/dm-migrations/sql/column.rb
|
45
|
+
- lib/dm-migrations/sql/mysql.rb
|
46
|
+
- lib/dm-migrations/sql/postgresql.rb
|
47
|
+
- lib/dm-migrations/sql/sqlite3.rb
|
48
|
+
- lib/dm-migrations/sql/table.rb
|
49
|
+
- lib/dm-migrations/sql/table_creator.rb
|
50
|
+
- lib/dm-migrations/sql/table_modifier.rb
|
50
51
|
- lib/dm-migrations/version.rb
|
51
|
-
- lib/migration.rb
|
52
|
-
- lib/migration_runner.rb
|
53
52
|
- lib/spec/example/migration_example_group.rb
|
54
53
|
- lib/spec/matchers/migration_matchers.rb
|
55
|
-
- lib/sql.rb
|
56
|
-
- lib/sql/column.rb
|
57
|
-
- lib/sql/mysql.rb
|
58
|
-
- lib/sql/postgresql.rb
|
59
|
-
- lib/sql/sqlite3.rb
|
60
|
-
- lib/sql/table.rb
|
61
|
-
- lib/sql/table_creator.rb
|
62
|
-
- lib/sql/table_modifier.rb
|
63
54
|
- spec/integration/migration_runner_spec.rb
|
64
55
|
- spec/integration/migration_spec.rb
|
65
56
|
- spec/integration/sql_spec.rb
|
@@ -77,11 +68,13 @@ files:
|
|
77
68
|
- tasks/install.rb
|
78
69
|
- tasks/spec.rb
|
79
70
|
has_rdoc: true
|
80
|
-
homepage: http://github.com/
|
71
|
+
homepage: http://github.com/datamapper/dm-more/tree/master/dm-migrations
|
72
|
+
licenses: []
|
73
|
+
|
81
74
|
post_install_message:
|
82
75
|
rdoc_options:
|
83
76
|
- --main
|
84
|
-
- README.
|
77
|
+
- README.rdoc
|
85
78
|
require_paths:
|
86
79
|
- lib
|
87
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -99,9 +92,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
92
|
requirements: []
|
100
93
|
|
101
94
|
rubyforge_project: datamapper
|
102
|
-
rubygems_version: 1.3.
|
95
|
+
rubygems_version: 1.3.5
|
103
96
|
signing_key:
|
104
|
-
specification_version:
|
97
|
+
specification_version: 3
|
105
98
|
summary: DataMapper plugin for writing and speccing migrations
|
106
99
|
test_files: []
|
107
100
|
|
data/lib/sql.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/sql/table_creator'
|
2
|
-
require File.dirname(__FILE__) + '/sql/table_modifier'
|
3
|
-
|
4
|
-
require File.dirname(__FILE__) + '/sql/sqlite3'
|
5
|
-
require File.dirname(__FILE__) + '/sql/mysql'
|
6
|
-
require File.dirname(__FILE__) + '/sql/postgresql'
|
7
|
-
|
8
|
-
module SQL
|
9
|
-
|
10
|
-
end
|