dm-migrations 0.9.11 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|