ridgepole 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2e09733c0324e6f1e7aac45b4b27b1dbf8492114
4
- data.tar.gz: ee817aee1eabf4f66821585b4e114daad6b1a41b
3
+ metadata.gz: f5d54e938bc4e2bf95598645ed4a431726393ec0
4
+ data.tar.gz: 4a51aeaa8a9f1b9786c77ec09607b7be67227c81
5
5
  SHA512:
6
- metadata.gz: 12cb083697c48bcd3b799f6686a32f91bdd62852d69fa235e9afabc790bf1b10e72b13357debd2a8d6b04d38fdaa1c850b407c04a7f622d75d3f282a747059a3
7
- data.tar.gz: be9c09c97c28b2ee4614230c37e81cb63f5323e1f9f50d68ab0e3d6f2806df15287432ebe4e05d458f8a0a40047e6116ca17029716d26f73ac66cdf9e21943cd
6
+ metadata.gz: 93a822f7d5188da00068bad5b309b76adac1e6ee8992550eeccff464672c54ac77f88fadd0817404f7b44115662bbaecb5fa782d6dceb41c03c15a522c1ee52a
7
+ data.tar.gz: 8073144c850abfff1970664fc861d241f7676cfc98e9e26afb0e5d6be0d8aac2b6ce42517ac4827bcf8b6b2d6bebad8fb13f79b511deef5539e4e615974e78a6
data/README.md CHANGED
@@ -25,10 +25,101 @@ Or install it yourself as:
25
25
  ## Usage
26
26
 
27
27
  ```sh
28
- ridgepole --export -o Schemafile
29
- vi Schemafile
30
- ridgepole --apply --dry-run
31
- ridgepole --apply
28
+ $ git init
29
+ Initialized empty Git repository in ...
30
+
31
+ $ cat config.yml
32
+ adapter: mysql2
33
+ encoding: utf8
34
+ database: blog
35
+ username: root
36
+
37
+ $ ridgepole -c config.yml --export -o Schemafile # or `ridgepole -c '{adapter: mysql2, database: blog}' ...`
38
+ Export Schema to `Schemafile`
39
+
40
+ $ cat Schemafile
41
+ create_table "articles", force: true do |t|
42
+ t.string "title"
43
+ t.text "text"
44
+ t.datetime "created_at"
45
+ t.datetime "updated_at"
46
+ end
47
+
48
+ $ git add .
49
+ $ git commit -m 'first commit' -a
50
+ [master (root-commit) a6c2d31] first commit
51
+ 2 files changed, 10 insertions(+)
52
+ create mode 100644 Schemafile
53
+ create mode 100644 config.yml
54
+
55
+ $ vi Schemafile
56
+ $ git diff
57
+ diff --git a/Schemafile b/Schemafile
58
+ index f5848b9..c266fed 100644
59
+ --- a/Schemafile
60
+ +++ b/Schemafile
61
+ @@ -1,6 +1,7 @@
62
+ create_table "articles", force: true do |t|
63
+ t.string "title"
64
+ t.text "text"
65
+ + t.text "author"
66
+ t.datetime "created_at"
67
+ t.datetime "updated_at"
68
+ end
69
+
70
+ $ ridgepole -c config.yml --apply --dry-run
71
+ Apply `Schemafile` (dry-run)
72
+ add_column("articles", "author", :text, {:after=>"text"})
73
+
74
+ $ ridgepole -c config.yml --apply
75
+ Apply `Schemafile`
76
+ -- add_column("articles", "author", :text, {:after=>"text"})
77
+ -> 0.0202s
78
+ ```
79
+
80
+ ## Diff
81
+ ```sh
82
+ $ ridgepole --diff file1.schema file2.schema
83
+ add_column("articles", "author", :text, {:after=>"title"})
84
+ rename_column("articles", "text", "desc")
85
+
86
+ # You can apply to the database the difference:
87
+ # $ ridgepole -c config.yml --diff file1.schema file2.schema --with-apply
88
+ ```
89
+
90
+ You can also compare databases and files.
91
+
92
+ ```sh
93
+ $ ridgepole --diff config.yml file1.schema
94
+ remove_column("articles", "author")
95
+ ```
96
+
97
+ ### Reverse diff
98
+ ```sh
99
+ $ cat file1.schema
100
+ create_table "articles", force: true do |t|
101
+ t.string "title"
102
+ t.text "text"
103
+ t.datetime "created_at"
104
+ t.datetime "updated_at"
105
+ end
106
+
107
+ $ cat file2.schema
108
+ create_table "articles", force: true do |t|
109
+ t.string "title"
110
+ t.text "desc", rename_from: "text"
111
+ t.text "author"
112
+ t.datetime "created_at"
113
+ t.datetime "updated_at"
114
+ end
115
+
116
+ $ ridgepole --diff file1.schema file2.schema
117
+ add_column("articles", "author", :text, {:after=>"title"})
118
+ rename_column("articles", "text", "desc")
119
+
120
+ $ ridgepole --diff file1.schema file2.schema --reverse
121
+ rename_column("articles", "desc", "text")
122
+ remove_column("articles", "author")
32
123
  ```
33
124
 
34
125
  ## Demo
data/bin/ridgepole CHANGED
@@ -17,6 +17,9 @@ mode = nil
17
17
  file = DEFAULT_FILENAME
18
18
  output_file = '-'
19
19
  split = false
20
+ diff_files = nil
21
+ diff_with_apply = false
22
+ exit_code = 0
20
23
 
21
24
  options = {
22
25
  :dry_run => false,
@@ -38,6 +41,20 @@ ARGV.options do |opt|
38
41
  opt.on('-e', '--export') { set_mode[:export] }
39
42
  opt.on('', '--split') {|v| split = true }
40
43
  opt.on('', '--split-with-dir') {|v| split = :with_dir }
44
+ opt.on('-d', '--diff DSL1 DSL2') {|diff_arg1|
45
+ set_mode[:diff]
46
+ diff_arg2 = ARGV.first
47
+
48
+ if [diff_arg1, diff_arg2].any? {|i| i.nil? or i =~ /\A-/ }
49
+ puts opt.help
50
+ exit 1
51
+ end
52
+
53
+ ARGV.shift
54
+ diff_files = [diff_arg1, diff_arg2]
55
+ }
56
+ opt.on('', '--reverse') { options[:reverse] = true }
57
+ opt.on('', '--with-apply') { diff_with_apply = true }
41
58
  opt.on('-o', '--output FILE') {|v| output_file = v }
42
59
  opt.on('-t', '--tables TABLES', Array) {|v| options[:tables] = v }
43
60
  opt.on('', '--ignore-tables TABLES', Array) {|v| options[:ignore_tables] = v.map {|i| Regexp.new(i) } }
@@ -47,7 +64,7 @@ ARGV.options do |opt|
47
64
  opt.on('' , '--debug') { options[:debug] = true }
48
65
  opt.parse!
49
66
 
50
- unless config and mode
67
+ if not mode or ([:apply, :export].include?(mode) and not config) or (options[:with_apply] and not config)
51
68
  puts opt.help
52
69
  exit 1
53
70
  end
@@ -61,9 +78,11 @@ begin
61
78
  logger = Ridgepole::Logger.instance
62
79
  logger.set_debug(options[:debug])
63
80
 
64
- config = open(config) {|f| f.read } if File.exist?(config)
65
- config = YAML.load(config)
66
- client = Ridgepole::Client.new(config, options)
81
+ if config
82
+ config = File.read(config) if File.exist?(config)
83
+ config = YAML.load(config)
84
+ client = Ridgepole::Client.new(config, options)
85
+ end
67
86
 
68
87
  case mode
69
88
  when :export
@@ -115,7 +134,7 @@ begin
115
134
  msg << ' (dry-run)' if options[:dry_run]
116
135
  logger.info(msg)
117
136
 
118
- dsl = open(file) {|f| f.read }
137
+ dsl = File.read(file)
119
138
  delta = client.diff(dsl, :path => file)
120
139
 
121
140
  if options[:dry_run]
@@ -128,6 +147,30 @@ begin
128
147
  unless delta.differ?
129
148
  logger.info('No change')
130
149
  end
150
+ when :diff
151
+ diff_files = diff_files.map do |file|
152
+ if File.exist?(file)
153
+ file_ext = File.extname(file)
154
+ %w(.yml .yaml).include?(file_ext) ? YAML.load_file(file) : File.read(file)
155
+ else
156
+ YAML.load(file)
157
+ end
158
+ end
159
+
160
+ delta = Ridgepole::Client.diff(*diff_files, options)
161
+
162
+ if diff_with_apply
163
+ logger.verbose_info('# Update schema')
164
+
165
+ if delta.differ?
166
+ delta.migrate
167
+ else
168
+ logger.info('No change')
169
+ end
170
+ elsif delta.differ?
171
+ puts delta.script
172
+ exit_code = 1
173
+ end
131
174
  end
132
175
  rescue => e
133
176
  if options[:debug]
@@ -137,3 +180,5 @@ rescue => e
137
180
  exit 1
138
181
  end
139
182
  end
183
+
184
+ exit exit_code
@@ -28,4 +28,32 @@ class Ridgepole::Client
28
28
  logger.verbose_info('# Compare definitions')
29
29
  @diff.diff(current_definition, expected_definition)
30
30
  end
31
+
32
+ class << self
33
+ def diff(dsl_or_config1, dsl_or_config2, options = {})
34
+ logger = Ridgepole::Logger.instance
35
+
36
+ logger.verbose_info('# Parse DSL1')
37
+ definition1 = load_definition(dsl_or_config1)
38
+ logger.verbose_info('# Parse DSL2')
39
+ definition2 = load_definition(dsl_or_config2)
40
+
41
+ logger.verbose_info('# Compare definitions')
42
+ diff = Ridgepole::Diff.new(options)
43
+ diff.diff(definition1, definition2)
44
+ end
45
+
46
+ def dump(conn_spec, options = {}, &block)
47
+ client = self.new(conn_spec, options)
48
+ client.dump(&block)
49
+ end
50
+
51
+ private
52
+
53
+ def load_definition(dsl_or_config, options = {})
54
+ dsl_or_config = dump(dsl_or_config, options) if dsl_or_config.kind_of?(Hash)
55
+ parser = Ridgepole::DSLParser.new(options)
56
+ parser.parse(dsl_or_config)
57
+ end
58
+ end # of class methods
31
59
  end
@@ -6,6 +6,11 @@ class Ridgepole::Diff
6
6
  def diff(from, to)
7
7
  from = (from || {}).dup
8
8
  to = (to || {}).dup
9
+
10
+ if @options[:reverse]
11
+ from, to = to, from
12
+ end
13
+
9
14
  delta = {}
10
15
 
11
16
  to.dup.each do |table_name, to_attrs|
@@ -23,6 +28,24 @@ class Ridgepole::Diff
23
28
  end
24
29
  end
25
30
 
31
+
32
+ # for reverse option
33
+ from.dup.each do |table_name, from_attrs|
34
+ if (to_table_name = (from_attrs[:options] || {}).delete(:rename_from))
35
+ unless to.has_key?(to_table_name)
36
+ raise "Table `#{from_table_name}` not found"
37
+ end
38
+
39
+ # XXX: Correct?
40
+ next unless target?(to_table_name)
41
+
42
+ delta[:rename] ||= {}
43
+ delta[:rename][to_table_name] = table_name
44
+ from.delete(table_name)
45
+ to.delete(to_table_name)
46
+ end
47
+ end
48
+
26
49
  to.each do |table_name, to_attrs|
27
50
  next unless target?(table_name)
28
51
 
@@ -87,6 +110,20 @@ class Ridgepole::Diff
87
110
  end
88
111
  end
89
112
 
113
+ # for reverse option
114
+ from.dup.each do |column_name, from_attrs|
115
+ if (to_column_name = (from_attrs[:options] || {}).delete(:rename_from))
116
+ unless to.has_key?(to_column_name)
117
+ raise "Column `#{to_column_name}` not found"
118
+ end
119
+
120
+ definition_delta[:rename] ||= {}
121
+ definition_delta[:rename][to_column_name] = column_name
122
+ from.delete(column_name)
123
+ to.delete(to_column_name)
124
+ end
125
+ end
126
+
90
127
  priv_column_name = nil
91
128
 
92
129
  to.each do |column_name, to_attrs|
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
File without changes
@@ -0,0 +1,154 @@
1
+ describe 'Ridgepole::Client.diff' do
2
+ context 'when change column' do
3
+ let(:actual_dsl) {
4
+ <<-RUBY
5
+ create_table "clubs", force: true do |t|
6
+ t.string "name", default: "", null: false
7
+ end
8
+
9
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
10
+
11
+ create_table "departments", primary_key: "dept_no", force: true do |t|
12
+ t.string "dept_name", limit: 40, null: false
13
+ end
14
+
15
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
16
+
17
+ create_table "dept_emp", id: false, force: true do |t|
18
+ t.integer "emp_no", null: false
19
+ t.string "dept_no", limit: 4, null: false
20
+ t.date "from_date", null: false
21
+ t.date "to_date", null: false
22
+ end
23
+
24
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
25
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
26
+
27
+ create_table "dept_manager", id: false, force: true do |t|
28
+ t.string "dept_no", limit: 4, null: false
29
+ t.integer "emp_no", null: false
30
+ t.date "from_date", null: false
31
+ t.date "to_date", null: false
32
+ end
33
+
34
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
35
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
36
+
37
+ create_table "employee_clubs", force: true do |t|
38
+ t.integer "emp_no", unsigned: true, null: false
39
+ t.integer "club_id", unsigned: true, null: false
40
+ end
41
+
42
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
43
+
44
+ create_table "employees", primary_key: "emp_no", force: true do |t|
45
+ t.date "birth_date", null: false
46
+ t.string "first_name", limit: 14, null: false
47
+ t.string "last_name", limit: 16, null: false
48
+ t.string "gender", limit: 1, null: false
49
+ t.date "hire_date", null: false
50
+ end
51
+
52
+ create_table "salaries", id: false, force: true do |t|
53
+ t.integer "emp_no", null: false
54
+ t.integer "salary", null: false
55
+ t.date "from_date", null: false
56
+ t.date "to_date", null: false
57
+ end
58
+
59
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
60
+
61
+ create_table "titles", id: false, force: true do |t|
62
+ t.integer "emp_no", null: false
63
+ t.string "title", limit: 50, null: false
64
+ t.date "from_date", null: false
65
+ t.date "to_date"
66
+ end
67
+
68
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
69
+ RUBY
70
+ }
71
+
72
+ let(:expected_dsl) {
73
+ <<-RUBY
74
+ create_table "clubs", force: true do |t|
75
+ t.string "name", default: "", null: false
76
+ end
77
+
78
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
79
+
80
+ create_table "departments", primary_key: "dept_no", force: true do |t|
81
+ t.string "dept_name", limit: 40, null: false
82
+ end
83
+
84
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
85
+
86
+ create_table "dept_emp", id: false, force: true do |t|
87
+ t.integer "emp_no", null: false
88
+ t.string "dept_no", limit: 4, null: false
89
+ t.date "from_date", null: false
90
+ t.date "to_date", null: false
91
+ end
92
+
93
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
94
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
95
+
96
+ create_table "dept_manager", id: false, force: true do |t|
97
+ t.string "dept_no", limit: 4, null: false
98
+ t.integer "emp_no", null: false
99
+ t.date "from_date", null: false
100
+ t.date "to_date", null: false
101
+ end
102
+
103
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
104
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
105
+
106
+ create_table "employee_clubs", force: true do |t|
107
+ t.integer "emp_no", unsigned: true, null: false
108
+ t.integer "club_id", unsigned: false, null: true
109
+ end
110
+
111
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
112
+
113
+ create_table "employees", primary_key: "emp_no", force: true do |t|
114
+ t.date "birth_date", null: false
115
+ t.string "first_name", limit: 14, null: false
116
+ t.string "last_name", limit: 20, default: "XXX", null: false
117
+ t.string "gender", limit: 2, null: false
118
+ t.date "hire_date", null: false
119
+ end
120
+
121
+ create_table "salaries", id: false, force: true do |t|
122
+ t.integer "emp_no", null: false
123
+ t.integer "salary", null: false
124
+ t.date "from_date", null: false
125
+ t.date "to_date", null: false
126
+ end
127
+
128
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
129
+
130
+ create_table "titles", id: false, force: true do |t|
131
+ t.integer "emp_no", null: false
132
+ t.string "title", limit: 50, null: false
133
+ t.date "from_date", null: false
134
+ t.date "to_date"
135
+ end
136
+
137
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
138
+ RUBY
139
+ }
140
+
141
+ subject { Ridgepole::Client }
142
+
143
+ it {
144
+ delta = subject.diff(actual_dsl, expected_dsl)
145
+ expect(delta.differ?).to be_true
146
+ expect(delta.script).to eq (<<-RUBY).undent.strip
147
+ change_column("employee_clubs", "club_id", :integer, {:unsigned=>false, :null=>true})
148
+
149
+ change_column("employees", "last_name", :string, {:limit=>20, :default=>"XXX", :null=>false, :unsigned=>false})
150
+ change_column("employees", "gender", :string, {:limit=>2, :null=>false, :unsigned=>false})
151
+ RUBY
152
+ }
153
+ end
154
+ end
@@ -1,7 +1,10 @@
1
- describe 'Ridgepole::Client#diff -> migrate' do
2
- context 'when drop table' do
3
- let(:dsl) {
4
- <<-RUBY
1
+ describe 'Ridgepole::Client.dump' do
2
+ context 'when there is a tables' do
3
+ before { restore_tables }
4
+ subject { Ridgepole::Client }
5
+
6
+ it {
7
+ expect(subject.dump(conn_spec)).to eq (<<-RUBY).undent.strip
5
8
  create_table "clubs", force: true do |t|
6
9
  t.string "name", default: "", null: false
7
10
  end
@@ -68,24 +71,5 @@ describe 'Ridgepole::Client#diff -> migrate' do
68
71
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
69
72
  RUBY
70
73
  }
71
-
72
- let(:actual_dsl) { dsl }
73
-
74
- let(:expected_dsl) {
75
- dsl.delete_create_table('clubs')
76
- .delete_create_table('employee_clubs')
77
- .delete_create_table('employees')
78
- }
79
-
80
- before { subject.diff(actual_dsl).migrate }
81
- subject { client }
82
-
83
- it {
84
- delta = subject.diff(expected_dsl)
85
- expect(delta.differ?).to be_true
86
- expect(subject.dump).to eq actual_dsl.undent.strip
87
- delta.migrate
88
- expect(subject.dump).to eq expected_dsl.undent.strip
89
- }
90
74
  end
91
75
  end
@@ -151,5 +151,16 @@ describe 'Ridgepole::Client#diff -> migrate' do
151
151
  delta.migrate
152
152
  expect(subject.dump).to eq expected_dsl.undent.strip
153
153
  }
154
+
155
+ it {
156
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
157
+ expect(delta.differ?).to be_true
158
+ expect(delta.script).to eq (<<-RUBY).undent.strip
159
+ remove_column("employee_clubs", "any_col")
160
+
161
+ remove_column("employees", "age")
162
+ remove_column("employees", "updated_at")
163
+ RUBY
164
+ }
154
165
  end
155
166
  end
@@ -148,5 +148,16 @@ describe 'Ridgepole::Client#diff -> migrate' do
148
148
  delta.migrate
149
149
  expect(subject.dump).to eq expected_dsl.undent.strip.gsub(/(\s*,\s*unsigned: false)?\s*,\s*null: true/, '')
150
150
  }
151
+
152
+ it {
153
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
154
+ expect(delta.differ?).to be_true
155
+ expect(delta.script).to eq (<<-RUBY).undent.strip
156
+ change_column("employee_clubs", "club_id", :integer, {:unsigned=>true, :null=>false})
157
+
158
+ change_column("employees", "last_name", :string, {:limit=>16, :null=>false, :unsigned=>false})
159
+ change_column("employees", "gender", :string, {:limit=>1, :null=>false, :unsigned=>false})
160
+ RUBY
161
+ }
151
162
  end
152
163
  end
@@ -36,5 +36,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
36
36
  delta.migrate
37
37
  expect(subject.dump).to eq actual_dsl.undent.strip
38
38
  }
39
+
40
+ it {
41
+ expect(Ridgepole::Logger.instance).to receive(:warn).with('[WARNING] Table `employees` options cannot be changed')
42
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
43
+ expect(delta.differ?).to be_false
44
+ }
39
45
  end
40
46
  end
@@ -87,5 +87,17 @@ describe 'Ridgepole::Client#diff -> migrate' do
87
87
  delta.migrate
88
88
  expect(subject.dump.delete_empty_lines).to eq expected_dsl.undent.strip.delete_empty_lines
89
89
  }
90
+
91
+ it {
92
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
93
+ expect(delta.differ?).to be_true
94
+ expect(delta.script).to eq (<<-RUBY).undent.strip
95
+ remove_index("clubs", {:name=>"idx_name"})
96
+
97
+ remove_index("employee_clubs", {:name=>"idx_emp_no_club_id"})
98
+
99
+ remove_index("titles", {:name=>"emp_no"})
100
+ RUBY
101
+ }
90
102
  end
91
103
  end
@@ -87,5 +87,17 @@ describe 'Ridgepole::Client#diff -> migrate' do
87
87
  delta.migrate
88
88
  expect(subject.dump.delete_empty_lines).to eq expected_dsl.undent.strip.delete_empty_lines
89
89
  }
90
+
91
+ it {
92
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
93
+ expect(delta.differ?).to be_true
94
+ expect(delta.script).to eq (<<-RUBY).undent.strip
95
+ drop_table("clubs")
96
+
97
+ drop_table("employee_clubs")
98
+
99
+ drop_table("employees")
100
+ RUBY
101
+ }
90
102
  end
91
103
  end
@@ -141,5 +141,21 @@ describe 'Ridgepole::Client#diff -> migrate' do
141
141
  delta.migrate
142
142
  expect(subject.dump).to eq expected_dsl.undent.strip
143
143
  }
144
+
145
+ it {
146
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
147
+ expect(delta.differ?).to be_true
148
+ expect(delta.script).to eq (<<-RUBY).undent.strip
149
+ add_column("dept_emp", "from_date", :date, {:null=>false, :after=>"dept_no"})
150
+ add_column("dept_emp", "to_date", :date, {:null=>false, :after=>"from_date"})
151
+
152
+ add_column("dept_manager", "from_date", :date, {:null=>false, :after=>"emp_no"})
153
+ add_column("dept_manager", "to_date", :date, {:null=>false, :after=>"from_date"})
154
+
155
+ add_column("employees", "last_name", :string, {:limit=>16, :null=>false, :after=>"first_name"})
156
+ add_column("employees", "gender", :string, {:limit=>1, :null=>false, :after=>"last_name"})
157
+ add_column("employees", "hire_date", :date, {:null=>false, :after=>"gender"})
158
+ RUBY
159
+ }
144
160
  end
145
161
  end
@@ -85,7 +85,19 @@ describe 'Ridgepole::Client#diff -> migrate' do
85
85
  expect(delta.differ?).to be_true
86
86
  expect(subject.dump).to eq actual_dsl.undent.strip
87
87
  delta.migrate
88
- expect(subject.dump).to eq expected_dsl.undent.strip
88
+ expect(subject.dump.each_line.select {|i| i !~ /\A\Z/ }.join).to eq expected_dsl.undent.strip.each_line.select {|i| i !~ /\A\Z/ }.join
89
+ }
90
+
91
+ it {
92
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
93
+ expect(delta.differ?).to be_true
94
+ expect(delta.script).to eq (<<-RUBY).undent.strip
95
+ add_index("clubs", ["name"], {:name=>"idx_name", :unique=>true, :using=>:btree})
96
+
97
+ add_index("employee_clubs", ["emp_no", "club_id"], {:name=>"idx_emp_no_club_id", :using=>:btree})
98
+
99
+ add_index("titles", ["emp_no"], {:name=>"emp_no", :using=>:btree})
100
+ RUBY
89
101
  }
90
102
  end
91
103
  end
@@ -0,0 +1,116 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when drop table' do
3
+ let(:dsl) {
4
+ <<-RUBY
5
+ create_table "clubs", force: true do |t|
6
+ t.string "name", default: "", null: false
7
+ end
8
+
9
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
10
+
11
+ create_table "departments", primary_key: "dept_no", force: true do |t|
12
+ t.string "dept_name", limit: 40, null: false
13
+ end
14
+
15
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
16
+
17
+ create_table "dept_emp", id: false, force: true do |t|
18
+ t.integer "emp_no", null: false
19
+ t.string "dept_no", limit: 4, null: false
20
+ t.date "from_date", null: false
21
+ t.date "to_date", null: false
22
+ end
23
+
24
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
25
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
26
+
27
+ create_table "dept_manager", id: false, force: true do |t|
28
+ t.string "dept_no", limit: 4, null: false
29
+ t.integer "emp_no", null: false
30
+ t.date "from_date", null: false
31
+ t.date "to_date", null: false
32
+ end
33
+
34
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
35
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
36
+
37
+ create_table "employee_clubs", force: true do |t|
38
+ t.integer "emp_no", unsigned: true, null: false
39
+ t.integer "club_id", unsigned: true, null: false
40
+ end
41
+
42
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
43
+
44
+ create_table "employees", primary_key: "emp_no", force: true do |t|
45
+ t.date "birth_date", null: false
46
+ t.string "first_name", limit: 14, null: false
47
+ t.string "last_name", limit: 16, null: false
48
+ t.string "gender", limit: 1, null: false
49
+ t.date "hire_date", null: false
50
+ end
51
+
52
+ create_table "salaries", id: false, force: true do |t|
53
+ t.integer "emp_no", null: false
54
+ t.integer "salary", null: false
55
+ t.date "from_date", null: false
56
+ t.date "to_date", null: false
57
+ end
58
+
59
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
60
+
61
+ create_table "titles", id: false, force: true do |t|
62
+ t.integer "emp_no", null: false
63
+ t.string "title", limit: 50, null: false
64
+ t.date "from_date", null: false
65
+ t.date "to_date"
66
+ end
67
+
68
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
69
+ RUBY
70
+ }
71
+
72
+ let(:actual_dsl) { dsl }
73
+
74
+ let(:expected_dsl) {
75
+ dsl.delete_create_table('clubs')
76
+ .delete_create_table('employee_clubs')
77
+ .delete_create_table('employees')
78
+ }
79
+
80
+ before { subject.diff(actual_dsl).migrate }
81
+ subject { client }
82
+
83
+ it {
84
+ delta = subject.diff(expected_dsl)
85
+ expect(delta.differ?).to be_true
86
+ expect(subject.dump).to eq actual_dsl.undent.strip
87
+ delta.migrate
88
+ expect(subject.dump.each_line.select {|i| i !~ /\A\Z/ }.join).to eq expected_dsl.undent.strip.each_line.select {|i| i !~ /\A\Z/ }.join
89
+ }
90
+
91
+ it {
92
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
93
+ expect(delta.differ?).to be_true
94
+ expect(delta.script).to eq (<<-RUBY).undent.strip
95
+ create_table("clubs", {}) do |t|
96
+ t.string("name", {:default=>"", :null=>false})
97
+ end
98
+ add_index("clubs", ["name"], {:name=>"idx_name", :unique=>true, :using=>:btree})
99
+
100
+ create_table("employee_clubs", {}) do |t|
101
+ t.integer("emp_no", {:unsigned=>true, :null=>false})
102
+ t.integer("club_id", {:unsigned=>true, :null=>false})
103
+ end
104
+ add_index("employee_clubs", ["emp_no", "club_id"], {:name=>"idx_emp_no_club_id", :using=>:btree})
105
+
106
+ create_table("employees", {:primary_key=>"emp_no"}) do |t|
107
+ t.date("birth_date", {:null=>false})
108
+ t.string("first_name", {:limit=>14, :null=>false})
109
+ t.string("last_name", {:limit=>16, :null=>false})
110
+ t.string("gender", {:limit=>1, :null=>false})
111
+ t.date("hire_date", {:null=>false})
112
+ end
113
+ RUBY
114
+ }
115
+ end
116
+ end
@@ -79,5 +79,27 @@ describe 'Ridgepole::Client#diff -> migrate' do
79
79
  delta.migrate
80
80
  expect(subject.dump).to eq expected_dsl.undent.strip
81
81
  }
82
+
83
+ it {
84
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
85
+ expect(delta.differ?).to be_true
86
+ expect(delta.script).to eq (<<-RUBY).undent.strip
87
+ drop_table("clubs")
88
+
89
+ drop_table("departments")
90
+
91
+ drop_table("dept_emp")
92
+
93
+ drop_table("dept_manager")
94
+
95
+ drop_table("employee_clubs")
96
+
97
+ drop_table("employees")
98
+
99
+ drop_table("salaries")
100
+
101
+ drop_table("titles")
102
+ RUBY
103
+ }
82
104
  end
83
105
  end
@@ -153,5 +153,10 @@ describe 'Ridgepole::Client#diff -> migrate' do
153
153
  # `clubs` table is not deleted
154
154
  expect(subject.dump).to eq expected_dsl.undent.strip
155
155
  }
156
+
157
+ it {
158
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, merge: true, reverse: true)
159
+ expect(delta.differ?).to be_false
160
+ }
156
161
  end
157
162
  end
@@ -148,6 +148,18 @@ describe 'Ridgepole::Client#diff -> migrate' do
148
148
  delta.migrate
149
149
  expect(subject.dump).to eq expected_dsl.undent.strip.gsub(/\s*,\s*rename_from:.*$/, '')
150
150
  }
151
+
152
+ it {
153
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
154
+ expect(delta.differ?).to be_true
155
+ expect(delta.script).to eq (<<-RUBY).undent.strip
156
+ rename_column("dept_emp", "from_date2", "from_date")
157
+
158
+ rename_column("dept_manager", "to_date2", "to_date")
159
+
160
+ rename_column("employees", "gender2", "gender")
161
+ RUBY
162
+ }
151
163
  end
152
164
 
153
165
  context 'when rename column (not found)' do
@@ -148,6 +148,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
148
148
  delta.migrate
149
149
  expect(subject.dump).to eq expected_dsl.undent.strip.gsub(/, rename_from: 'employees'/, '')
150
150
  }
151
+
152
+ it {
153
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
154
+ expect(delta.differ?).to be_true
155
+ expect(delta.script).to eq (<<-RUBY).undent.strip
156
+ rename_table("employees2", "employees")
157
+ RUBY
158
+ }
151
159
  end
152
160
 
153
161
  context 'when rename table (not found)' do
@@ -0,0 +1,155 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when with ignore tables option (same)' do
3
+ let(:current_schema) {
4
+ <<-RUBY
5
+ create_table "employees", primary_key: "emp_no", force: true do |t|
6
+ t.date "birth_date", null: false
7
+ t.string "first_name", limit: 14, null: false
8
+ t.string "last_name", limit: 16, null: false
9
+ t.string "gender", limit: 1, null: false
10
+ t.date "hire_date", null: false
11
+ end
12
+
13
+ create_table "salaries", id: false, force: true do |t|
14
+ t.integer "emp_no", null: false
15
+ t.integer "salary", null: false
16
+ t.date "from_date", null: false
17
+ t.date "to_date", null: false
18
+ end
19
+
20
+ add_index "salaries", ["salary"], name: "emp_no", using: :btree
21
+ RUBY
22
+ }
23
+
24
+ let(:dsl) {
25
+ <<-RUBY
26
+ create_table "employees", primary_key: "emp_no", force: true do |t|
27
+ t.date "birth_date", null: false
28
+ t.string "first_name", limit: 14, null: false
29
+ t.string "last_name", limit: 16, null: false
30
+ t.string "gender", limit: 1, null: false
31
+ t.date "hire_date", null: false
32
+ end
33
+
34
+ create_table "salaries", id: false, force: true do |t|
35
+ t.integer "emp_no", null: false
36
+ t.integer "salary", null: false
37
+ t.date "from_date", null: false
38
+ t.date "to_date", null: false
39
+ end
40
+
41
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
42
+ RUBY
43
+ }
44
+
45
+ let(:expected_dsl) {
46
+ <<-RUBY
47
+ create_table "employees", primary_key: "emp_no", force: true do |t|
48
+ t.date "birth_date", null: false
49
+ t.string "first_name", limit: 14, null: false
50
+ t.string "last_name", limit: 16, null: false
51
+ t.string "gender", limit: 1, null: false
52
+ t.date "hire_date", null: false
53
+ end
54
+ RUBY
55
+ }
56
+
57
+ before { subject.diff(current_schema).migrate }
58
+ subject { client(ignore_tables: [/^salaries$/] ) }
59
+
60
+ it {
61
+ delta = subject.diff(dsl)
62
+ expect(delta.differ?).to be_false
63
+ expect(subject.dump).to eq expected_dsl.undent.strip
64
+ delta.migrate
65
+ expect(subject.dump).to eq expected_dsl.undent.strip
66
+ }
67
+ end
68
+
69
+ context 'when with ignore tables option (differ)' do
70
+ let(:current_schema) {
71
+ <<-RUBY
72
+ create_table "employees", primary_key: "emp_no", force: true do |t|
73
+ t.date "birth_date", null: false
74
+ t.string "first_name", limit: 14, null: false
75
+ t.string "last_name", limit: 16, null: false
76
+ t.string "gender", limit: 1, null: false
77
+ t.date "hire_date", null: false
78
+ end
79
+
80
+ create_table "salaries", id: false, force: true do |t|
81
+ t.integer "emp_no", null: false
82
+ t.integer "salary", null: false
83
+ t.date "from_date", null: false
84
+ t.date "to_date", null: false
85
+ end
86
+
87
+ add_index "salaries", ["salary"], name: "emp_no", using: :btree
88
+ RUBY
89
+ }
90
+
91
+ let(:dsl) {
92
+ <<-RUBY
93
+ create_table "employees", primary_key: "emp_no", force: true do |t|
94
+ t.date "birth_date", null: false
95
+ t.string "first_name", limit: 15, null: false
96
+ t.string "last_name", limit: 16, null: false
97
+ t.string "gender", limit: 1, null: false
98
+ t.date "hire_date", null: false
99
+ end
100
+
101
+ create_table "salaries", id: false, force: true do |t|
102
+ t.integer "emp_no", null: false
103
+ t.integer "salary", null: false
104
+ t.date "from_date", null: false
105
+ t.date "to_date", null: false
106
+ end
107
+
108
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
109
+ RUBY
110
+ }
111
+
112
+ let(:before_dsl) {
113
+ <<-RUBY
114
+ create_table "employees", primary_key: "emp_no", force: true do |t|
115
+ t.date "birth_date", null: false
116
+ t.string "first_name", limit: 14, null: false
117
+ t.string "last_name", limit: 16, null: false
118
+ t.string "gender", limit: 1, null: false
119
+ t.date "hire_date", null: false
120
+ end
121
+ RUBY
122
+ }
123
+
124
+ let(:after_dsl) {
125
+ <<-RUBY
126
+ create_table "employees", primary_key: "emp_no", force: true do |t|
127
+ t.date "birth_date", null: false
128
+ t.string "first_name", limit: 15, null: false
129
+ t.string "last_name", limit: 16, null: false
130
+ t.string "gender", limit: 1, null: false
131
+ t.date "hire_date", null: false
132
+ end
133
+ RUBY
134
+ }
135
+
136
+ before { subject.diff(current_schema).migrate }
137
+ subject { client(ignore_tables: [/^salaries$/] ) }
138
+
139
+ it {
140
+ delta = subject.diff(dsl)
141
+ expect(delta.differ?).to be_true
142
+ expect(subject.dump).to eq before_dsl.undent.strip
143
+ delta.migrate
144
+ expect(subject.dump).to eq after_dsl.undent.strip
145
+ }
146
+
147
+ it {
148
+ delta = Ridgepole::Client.diff(current_schema, dsl, ignore_tables: [/^salaries$/], reverse: true)
149
+ expect(delta.differ?).to be_true
150
+ expect(delta.script).to eq (<<-RUBY).undent.strip
151
+ change_column("employees", "first_name", :string, {:limit=>14, :null=>false, :unsigned=>false})
152
+ RUBY
153
+ }
154
+ end
155
+ end
@@ -0,0 +1,155 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when with tables option (same)' do
3
+ let(:current_schema) {
4
+ <<-RUBY
5
+ create_table "employees", primary_key: "emp_no", force: true do |t|
6
+ t.date "birth_date", null: false
7
+ t.string "first_name", limit: 14, null: false
8
+ t.string "last_name", limit: 16, null: false
9
+ t.string "gender", limit: 1, null: false
10
+ t.date "hire_date", null: false
11
+ end
12
+
13
+ create_table "salaries", id: false, force: true do |t|
14
+ t.integer "emp_no", null: false
15
+ t.integer "salary", null: false
16
+ t.date "from_date", null: false
17
+ t.date "to_date", null: false
18
+ end
19
+
20
+ add_index "salaries", ["salary"], name: "emp_no", using: :btree
21
+ RUBY
22
+ }
23
+
24
+ let(:dsl) {
25
+ <<-RUBY
26
+ create_table "employees", primary_key: "emp_no", force: true do |t|
27
+ t.date "birth_date", null: false
28
+ t.string "first_name", limit: 14, null: false
29
+ t.string "last_name", limit: 16, null: false
30
+ t.string "gender", limit: 1, null: false
31
+ t.date "hire_date", null: false
32
+ end
33
+
34
+ create_table "salaries", id: false, force: true do |t|
35
+ t.integer "emp_no", null: false
36
+ t.integer "salary", null: false
37
+ t.date "from_date", null: false
38
+ t.date "to_date", null: false
39
+ end
40
+
41
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
42
+ RUBY
43
+ }
44
+
45
+ let(:expected_dsl) {
46
+ <<-RUBY
47
+ create_table "employees", primary_key: "emp_no", force: true do |t|
48
+ t.date "birth_date", null: false
49
+ t.string "first_name", limit: 14, null: false
50
+ t.string "last_name", limit: 16, null: false
51
+ t.string "gender", limit: 1, null: false
52
+ t.date "hire_date", null: false
53
+ end
54
+ RUBY
55
+ }
56
+
57
+ before { subject.diff(current_schema).migrate }
58
+ subject { client(tables: ['employees'] ) }
59
+
60
+ it {
61
+ delta = subject.diff(dsl)
62
+ expect(delta.differ?).to be_false
63
+ expect(subject.dump).to eq expected_dsl.undent.strip
64
+ delta.migrate
65
+ expect(subject.dump).to eq expected_dsl.undent.strip
66
+ }
67
+ end
68
+
69
+ context 'when with tables option (differ)' do
70
+ let(:current_schema) {
71
+ <<-RUBY
72
+ create_table "employees", primary_key: "emp_no", force: true do |t|
73
+ t.date "birth_date", null: false
74
+ t.string "first_name", limit: 14, null: false
75
+ t.string "last_name", limit: 16, null: false
76
+ t.string "gender", limit: 1, null: false
77
+ t.date "hire_date", null: false
78
+ end
79
+
80
+ create_table "salaries", id: false, force: true do |t|
81
+ t.integer "emp_no", null: false
82
+ t.integer "salary", null: false
83
+ t.date "from_date", null: false
84
+ t.date "to_date", null: false
85
+ end
86
+
87
+ add_index "salaries", ["salary"], name: "emp_no", using: :btree
88
+ RUBY
89
+ }
90
+
91
+ let(:dsl) {
92
+ <<-RUBY
93
+ create_table "employees", primary_key: "emp_no", force: true do |t|
94
+ t.date "birth_date", null: false
95
+ t.string "first_name", limit: 15, null: false
96
+ t.string "last_name", limit: 16, null: false
97
+ t.string "gender", limit: 1, null: false
98
+ t.date "hire_date", null: false
99
+ end
100
+
101
+ create_table "salaries", id: false, force: true do |t|
102
+ t.integer "emp_no", null: false
103
+ t.integer "salary", null: false
104
+ t.date "from_date", null: false
105
+ t.date "to_date", null: false
106
+ end
107
+
108
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
109
+ RUBY
110
+ }
111
+
112
+ let(:before_dsl) {
113
+ <<-RUBY
114
+ create_table "employees", primary_key: "emp_no", force: true do |t|
115
+ t.date "birth_date", null: false
116
+ t.string "first_name", limit: 14, null: false
117
+ t.string "last_name", limit: 16, null: false
118
+ t.string "gender", limit: 1, null: false
119
+ t.date "hire_date", null: false
120
+ end
121
+ RUBY
122
+ }
123
+
124
+ let(:after_dsl) {
125
+ <<-RUBY
126
+ create_table "employees", primary_key: "emp_no", force: true do |t|
127
+ t.date "birth_date", null: false
128
+ t.string "first_name", limit: 15, null: false
129
+ t.string "last_name", limit: 16, null: false
130
+ t.string "gender", limit: 1, null: false
131
+ t.date "hire_date", null: false
132
+ end
133
+ RUBY
134
+ }
135
+
136
+ before { subject.diff(current_schema).migrate }
137
+ subject { client(tables: ['employees']) }
138
+
139
+ it {
140
+ delta = subject.diff(dsl)
141
+ expect(delta.differ?).to be_true
142
+ expect(subject.dump).to eq before_dsl.undent.strip
143
+ delta.migrate
144
+ expect(subject.dump).to eq after_dsl.undent.strip
145
+ }
146
+
147
+ it {
148
+ delta = Ridgepole::Client.diff(current_schema, dsl, tables: ['employees'], reverse: true)
149
+ expect(delta.differ?).to be_true
150
+ expect(delta.script).to eq (<<-RUBY).undent.strip
151
+ change_column("employees", "first_name", :string, {:limit=>14, :null=>false, :unsigned=>false})
152
+ RUBY
153
+ }
154
+ end
155
+ end
data/spec/spec_helper.rb CHANGED
@@ -22,13 +22,17 @@ def restore_tables
22
22
  end
23
23
 
24
24
  def client(options = {}, config = {})
25
- config = {
26
- adapter: 'mysql2',
27
- database: 'ridgepole_test',
28
- }.merge(config)
25
+ config = conn_spec(config)
29
26
 
30
27
  options = {
31
28
  }.merge(options)
32
29
 
33
30
  Ridgepole::Client.new(config, options)
34
- end
31
+ end
32
+
33
+ def conn_spec(config = {})
34
+ {
35
+ adapter: 'mysql2',
36
+ database: 'ridgepole_test',
37
+ }.merge(config)
38
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridgepole
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-01 00:00:00.000000000 Z
11
+ date: 2014-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -122,7 +122,9 @@ files:
122
122
  - lib/ridgepole/string_ext.rb
123
123
  - lib/ridgepole/version.rb
124
124
  - ridgepole.gemspec
125
- - spec/dump/dump_disable_unsigned_spec.rb
125
+ - spec/0_diff/dump_disable_unsigned_spec.rb
126
+ - spec/diff/diff_spec.rb
127
+ - spec/dump/dump_class_method_spec.rb
126
128
  - spec/dump/dump_some_tables_spec.rb
127
129
  - spec/dump/dump_spec.rb
128
130
  - spec/migrate/migrate_add_column_spec.rb
@@ -131,8 +133,8 @@ files:
131
133
  - spec/migrate/migrate_create_index_spec.rb
132
134
  - spec/migrate/migrate_create_table_spec.rb
133
135
  - spec/migrate/migrate_drop_column_spec.rb
134
- - spec/migrate/migrate_drop_index.rb
135
- - spec/migrate/migrate_drop_table.rb
136
+ - spec/migrate/migrate_drop_index_spec.rb
137
+ - spec/migrate/migrate_drop_table_spec.rb
136
138
  - spec/migrate/migrate_duplicate_index_spec.rb
137
139
  - spec/migrate/migrate_duplicate_table_spec.rb
138
140
  - spec/migrate/migrate_empty_spec.rb
@@ -142,6 +144,8 @@ files:
142
144
  - spec/migrate/migrate_same_default_null_spec.rb
143
145
  - spec/migrate/migrate_same_default_unsigned_spec.rb
144
146
  - spec/migrate/migrate_same_spec.rb
147
+ - spec/migrate/migrate_with_ignore_tables_spec.rb
148
+ - spec/migrate/migrate_with_tables_spec.rb
145
149
  - spec/ridgepole_test_database.sql
146
150
  - spec/ridgepole_test_tables.sql
147
151
  - spec/spec_helper.rb
@@ -171,7 +175,9 @@ signing_key:
171
175
  specification_version: 4
172
176
  summary: Ridgepole is a tool to DB schema.
173
177
  test_files:
174
- - spec/dump/dump_disable_unsigned_spec.rb
178
+ - spec/0_diff/dump_disable_unsigned_spec.rb
179
+ - spec/diff/diff_spec.rb
180
+ - spec/dump/dump_class_method_spec.rb
175
181
  - spec/dump/dump_some_tables_spec.rb
176
182
  - spec/dump/dump_spec.rb
177
183
  - spec/migrate/migrate_add_column_spec.rb
@@ -180,8 +186,8 @@ test_files:
180
186
  - spec/migrate/migrate_create_index_spec.rb
181
187
  - spec/migrate/migrate_create_table_spec.rb
182
188
  - spec/migrate/migrate_drop_column_spec.rb
183
- - spec/migrate/migrate_drop_index.rb
184
- - spec/migrate/migrate_drop_table.rb
189
+ - spec/migrate/migrate_drop_index_spec.rb
190
+ - spec/migrate/migrate_drop_table_spec.rb
185
191
  - spec/migrate/migrate_duplicate_index_spec.rb
186
192
  - spec/migrate/migrate_duplicate_table_spec.rb
187
193
  - spec/migrate/migrate_empty_spec.rb
@@ -191,6 +197,8 @@ test_files:
191
197
  - spec/migrate/migrate_same_default_null_spec.rb
192
198
  - spec/migrate/migrate_same_default_unsigned_spec.rb
193
199
  - spec/migrate/migrate_same_spec.rb
200
+ - spec/migrate/migrate_with_ignore_tables_spec.rb
201
+ - spec/migrate/migrate_with_tables_spec.rb
194
202
  - spec/ridgepole_test_database.sql
195
203
  - spec/ridgepole_test_tables.sql
196
204
  - spec/spec_helper.rb