ridgepole 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7284de718aedfc85207971f129586dffa5fd49a7
4
- data.tar.gz: 2db55a88104e340788971af634b202ebf80a93db
3
+ metadata.gz: 74af55adebfffcd9880e5a0fde3e2eee3fc2c75d
4
+ data.tar.gz: 1b3255a9a2c1b29b3980b32739a55b83100542c3
5
5
  SHA512:
6
- metadata.gz: ed41b7613dcd5e5a87b3673a27bffbad4043638203af53941d1798b77841a639cdb3d696ffff77bfed52d3bf3b8eebe0344f426d759eed4cb40e6ee108ddb46e
7
- data.tar.gz: 875a498eba1c73fa5898d1522106bcddc4bf22045198823b9e1d486242cb33b607d0b901ae7ca02e51444e64cf3ce01983fdabe3f25645f496c726a134fad241
6
+ metadata.gz: 83ae32148265a558bb781c2eadf4cc3b988d2a4380fb66be2e7e13163b239e7ea1c3d1a4136f3d7149ede683338dc0fb2b0e8ced5c8d3b460fd4d9647bb10fe0
7
+ data.tar.gz: 9099196ec666a10f7da892c3af21302e654c0801516815e1a888eec86a034d649cfe4eb940cd8ffafa0cd457c08b63657a1cf05621a57793ee78773143a31a42
@@ -8,6 +8,8 @@ class Ridgepole::DSLParser
8
8
  end
9
9
 
10
10
  def column(name, type, options = {})
11
+ name = name.to_s
12
+
11
13
  @__definition[name] = {
12
14
  :type => type,
13
15
  :options => options,
@@ -57,7 +59,13 @@ class Ridgepole::DSLParser
57
59
  end
58
60
 
59
61
  def create_table(table_name, options = {})
62
+ table_name = table_name.to_s
60
63
  table_definition = TableDefinition.new
64
+
65
+ [:primary_key].each do |key|
66
+ options[key] = options[key].to_s if options[key]
67
+ end
68
+
61
69
  yield(table_definition)
62
70
  @__definition[table_name] ||= {}
63
71
 
@@ -71,6 +79,9 @@ class Ridgepole::DSLParser
71
79
  end
72
80
 
73
81
  def add_index(table_name, column_name, options = {})
82
+ table_name = table_name.to_s
83
+ column_name = [column_name].flatten.map {|i| i.to_s }
84
+ options[:name] = options[:name].to_s if options[:name]
74
85
  @__definition[table_name] ||= {}
75
86
  @__definition[table_name][:indices] ||= {}
76
87
  idx = options[:name] || column_name
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.4.0'
2
+ VERSION = '0.4.1'
3
3
  end
@@ -0,0 +1,94 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when change column (no change)' do
3
+ let(:actual_dsl) {
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
+ add_index "employees", ["gender"], name: "gender", using: :btree
14
+ RUBY
15
+ }
16
+
17
+ let(:expected_dsl) {
18
+ <<-RUBY
19
+ create_table :employees, primary_key: :emp_no, force: true do |t|
20
+ t.date "birth_date", null: false
21
+ t.string "first_name", limit: 14, null: false
22
+ t.string "last_name", limit: 16, null: false
23
+ t.string "gender", limit: 1, null: false
24
+ t.date :hire_date, null: false
25
+ end
26
+
27
+ add_index :employees, :gender, name: :gender, using: :btree
28
+ RUBY
29
+ }
30
+
31
+ before { subject.diff(actual_dsl).migrate }
32
+ subject { client }
33
+
34
+ it {
35
+ delta = subject.diff(expected_dsl)
36
+ expect(delta.differ?).to be_falsey
37
+ }
38
+ end
39
+
40
+ context 'when change column (change)' do
41
+ let(:actual_dsl) {
42
+ <<-RUBY
43
+ create_table "employees", primary_key: "emp_no", force: true do |t|
44
+ t.date "birth_date", null: false
45
+ t.string "first_name", limit: 14, null: false
46
+ t.string "last_name", limit: 16, null: false
47
+ t.string "gender", limit: 1, null: false
48
+ t.date "hire_date", null: false
49
+ end
50
+
51
+ add_index "employees", ["gender"], name: "gender", using: :btree
52
+ RUBY
53
+ }
54
+
55
+ let(:dsl) {
56
+ <<-RUBY
57
+ create_table :employees, primary_key: :emp_no, force: true do |t|
58
+ t.date "birth_date", null: false
59
+ t.string "first_name", limit: 14, null: false
60
+ t.string "last_name", limit: 16, null: false
61
+ t.string "gender", limit: 1, null: false
62
+ t.date :hire_date2, null: false
63
+ end
64
+
65
+ add_index :employees, :last_name, name: :last_name, using: :btree
66
+ RUBY
67
+ }
68
+
69
+ let(:expected_dsl) {
70
+ <<-RUBY
71
+ create_table "employees", primary_key: "emp_no", force: true do |t|
72
+ t.date "birth_date", null: false
73
+ t.string "first_name", limit: 14, null: false
74
+ t.string "last_name", limit: 16, null: false
75
+ t.string "gender", limit: 1, null: false
76
+ t.date "hire_date2", null: false
77
+ end
78
+
79
+ add_index "employees", ["last_name"], name: "last_name", using: :btree
80
+ RUBY
81
+ }
82
+
83
+ before { subject.diff(actual_dsl).migrate }
84
+ subject { client }
85
+
86
+ it {
87
+ delta = subject.diff(dsl)
88
+ expect(delta.differ?).to be_truthy
89
+ expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
90
+ delta.migrate
91
+ expect(subject.dump).to eq expected_dsl.strip_heredoc.strip.gsub(/(\s*,\s*unsigned: false)?\s*,\s*null: true/, '')
92
+ }
93
+ end
94
+ end
@@ -0,0 +1,89 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when change index (no change)' do
3
+ let(:actual_dsl) {
4
+ <<-RUBY
5
+ create_table "salaries", id: false, force: true do |t|
6
+ t.integer "emp_no", null: false
7
+ t.integer "salary", null: false
8
+ t.date "from_date", null: false
9
+ t.date "to_date", null: false
10
+ end
11
+
12
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
13
+ RUBY
14
+ }
15
+
16
+ let(:expected_dsl) {
17
+ <<-RUBY
18
+ create_table "salaries", id: false, force: true do |t|
19
+ t.integer "emp_no", null: false
20
+ t.integer "salary", null: false
21
+ t.date "from_date", null: false
22
+ t.date "to_date", null: false
23
+ end
24
+
25
+ add_index "salaries", "emp_no", name: "emp_no", using: :btree
26
+ RUBY
27
+ }
28
+
29
+ before { subject.diff(actual_dsl).migrate }
30
+ subject { client }
31
+
32
+ it {
33
+ delta = subject.diff(expected_dsl)
34
+ expect(delta.differ?).to be_falsey
35
+ }
36
+ end
37
+
38
+ context 'when change index (change)' do
39
+ let(:actual_dsl) {
40
+ <<-RUBY
41
+ create_table "salaries", id: false, force: true do |t|
42
+ t.integer "emp_no", null: false
43
+ t.integer "salary", null: false
44
+ t.date "from_date", null: false
45
+ t.date "to_date", null: false
46
+ end
47
+
48
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
49
+ RUBY
50
+ }
51
+
52
+ let(:dsl) {
53
+ <<-RUBY
54
+ create_table "salaries", id: false, force: true do |t|
55
+ t.integer "emp_no", null: false
56
+ t.integer "salary", null: false
57
+ t.date "from_date", null: false
58
+ t.date "to_date", null: false
59
+ end
60
+
61
+ add_index "salaries", "salary", name: "emp_no", using: :btree
62
+ RUBY
63
+ }
64
+
65
+ let(:expected_dsl) {
66
+ <<-RUBY
67
+ create_table "salaries", id: false, force: true do |t|
68
+ t.integer "emp_no", null: false
69
+ t.integer "salary", null: false
70
+ t.date "from_date", null: false
71
+ t.date "to_date", null: false
72
+ end
73
+
74
+ add_index "salaries", ["salary"], name: "emp_no", using: :btree
75
+ RUBY
76
+ }
77
+
78
+ before { subject.diff(actual_dsl).migrate }
79
+ subject { client }
80
+
81
+ it {
82
+ delta = subject.diff(dsl)
83
+ expect(delta.differ?).to be_truthy
84
+ expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
85
+ delta.migrate
86
+ expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
87
+ }
88
+ end
89
+ end
@@ -1,5 +1,5 @@
1
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
- context 'when create index' do
2
+ context 'when change index' do
3
3
  let(:dsl) {
4
4
  <<-RUBY
5
5
  create_table "clubs", force: true do |t|
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.4.0
4
+ version: 0.4.1
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-08-26 00:00:00.000000000 Z
11
+ date: 2014-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -130,7 +130,9 @@ files:
130
130
  - spec/dump/dump_spec.rb
131
131
  - spec/migrate/check_orphan_index_spec.rb
132
132
  - spec/migrate/migrate_add_column_spec.rb
133
+ - spec/migrate/migrate_change_column2_spec.rb
133
134
  - spec/migrate/migrate_change_column_spec.rb
135
+ - spec/migrate/migrate_change_index2_spec.rb
134
136
  - spec/migrate/migrate_change_index_spec.rb
135
137
  - spec/migrate/migrate_change_table_option_spec.rb
136
138
  - spec/migrate/migrate_create_index_spec.rb
@@ -181,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
183
  version: '0'
182
184
  requirements: []
183
185
  rubyforge_project:
184
- rubygems_version: 2.0.14
186
+ rubygems_version: 2.4.1
185
187
  signing_key:
186
188
  specification_version: 4
187
189
  summary: Ridgepole is a tool to DB schema.
@@ -193,7 +195,9 @@ test_files:
193
195
  - spec/dump/dump_spec.rb
194
196
  - spec/migrate/check_orphan_index_spec.rb
195
197
  - spec/migrate/migrate_add_column_spec.rb
198
+ - spec/migrate/migrate_change_column2_spec.rb
196
199
  - spec/migrate/migrate_change_column_spec.rb
200
+ - spec/migrate/migrate_change_index2_spec.rb
197
201
  - spec/migrate/migrate_change_index_spec.rb
198
202
  - spec/migrate/migrate_change_table_option_spec.rb
199
203
  - spec/migrate/migrate_create_index_spec.rb