convergence 0.2.5 → 0.2.6

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: b6ca8631b2fc6fbf1bc013707fd10f1126e4277e
4
- data.tar.gz: d349021ae530f9a365c5bd89fb21a62e3e5ea0a0
3
+ metadata.gz: 791c3a30d2bc49635b6e63fe9d137e9d20a99236
4
+ data.tar.gz: c21c2f48ea674ee79308257165b5c57111b7f638
5
5
  SHA512:
6
- metadata.gz: 7f622d677660e12eb49d524312333217bdedd92cb3f8d0d6675a70403332efb6e4b495f7cfbf4075b3d1ea9a0ab1f670e286dd8a162e448e221a99742db2598e
7
- data.tar.gz: 5736856479b0a1bee16e729c391b413ba78cda885b8a8d0b4f258f1a34cc25e94fa3a33d8281d7db765b04d5ce6f27ab80dfb45c132c732c1c386cc91973bcfc
6
+ metadata.gz: 6f3c65613fe2ace2c270e8462d8b0b369aa177fb9c99ccaf21dbf31c5b5bfe7033b40dc30bc9cccb9a9eaf8eca46e0be2adb2fbd60f115fafc9697058f3d5ef2
7
+ data.tar.gz: 951a2df0c366c648462aaabd6b65d284f04b3374c4d057bacc1d1e409d22e2012b7525c9c50d2d1d1f19f8d4519f714b39665530df86f67a4915affac720408a
@@ -1,3 +1,17 @@
1
+ ## Convergence 0.2.6 (March 4, 2018) ##
2
+
3
+ * Improve dryrun output (PR: #55)
4
+
5
+ *yujideveloper*
6
+
7
+ * Support MySQL identifiers that require quotes in Ruby symbol syntax on export dsl (PR: #56)
8
+
9
+ *yujideveloper*
10
+
11
+ * Output help message when executed without option (PR: #57)
12
+
13
+ *yujideveloper*
14
+
1
15
  ## Convergence 0.2.5 (December 21, 2017) ##
2
16
 
3
17
  * Bug Fix Diff option does not work fine (PR: #50)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- convergence (0.2.5)
4
+ convergence (0.2.6)
5
5
  diff-lcs
6
6
  diffy
7
7
  mysql2
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Shinsuke Nishio
1
+ Copyright (c) 2014-2018 Shinsuke Nishio
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -55,8 +55,6 @@ end
55
55
 
56
56
  $ convergence -c database.yml -i example.schema --dryrun
57
57
 
58
- #
59
- #
60
58
  # CREATE TABLE `test_tables` (
61
59
  # `id` int(11) NOT NULL AUTO_INCREMENT,
62
60
  # `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
@@ -69,7 +67,7 @@ $ convergence -c database.yml -i example.schema --dryrun
69
67
  $ convergence -c database.yml -i example.schema --apply
70
68
 
71
69
  SET FOREIGN_KEY_CHECKS=0;
72
- --> 0.000794s
70
+ --> 0.0005826340056955814s
73
71
  CREATE TABLE `test_tables` (
74
72
  `id` int(11) NOT NULL AUTO_INCREMENT,
75
73
  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
@@ -78,9 +76,9 @@ CREATE TABLE `test_tables` (
78
76
  PRIMARY KEY (`id`),
79
77
  KEY `index_test_tables_on_name` (`name`)
80
78
  ) ENGINE=InnoDB ROW_FORMAT=Compact DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;
81
- --> 0.01485s
79
+ --> 0.017457014000683557s
82
80
  SET FOREIGN_KEY_CHECKS=1;
83
- --> 0.000115s
81
+ --> 0.00019878800230799243s
84
82
 
85
83
  $ cat changed_example.schema
86
84
 
@@ -93,24 +91,29 @@ end
93
91
 
94
92
  $ convergence -c database.yml -i changed_example.schema --dryrun
95
93
 
96
- # ALTER TABLE `test_tables` DROP COLUMN `updated_at`;
97
- # ALTER TABLE `test_tables` ADD COLUMN `posted_at` datetime NOT NULL AFTER `created_at`;
98
94
  # DROP INDEX `index_test_tables_on_name` ON `test_tables`;
95
+ # ALTER TABLE `test_tables`
96
+ # DROP COLUMN `updated_at`;
97
+ # ALTER TABLE `test_tables`
98
+ # ADD COLUMN `posted_at` datetime NOT NULL AFTER `created_at`;
99
99
  # ALTER TABLE `test_tables` ENGINE=MyISAM COMMENT='Table Comment Test';
100
100
 
101
101
  $ convergence -c database.yml -i changed_example.schema --apply
102
+
102
103
  SET FOREIGN_KEY_CHECKS=0;
103
- --> 0.000847s
104
- ALTER TABLE `test_tables` DROP COLUMN `updated_at`;
105
- --> 0.034026s
106
- ALTER TABLE `test_tables` ADD COLUMN `posted_at` datetime NOT NULL AFTER `created_at`;
107
- --> 0.025328s
104
+ --> 0.0005331430002115667s
108
105
  DROP INDEX `index_test_tables_on_name` ON `test_tables`;
109
- --> 0.011465s
106
+ --> 0.010850776998267975s
107
+ ALTER TABLE `test_tables`
108
+ DROP COLUMN `updated_at`;
109
+ --> 0.025050114003533963s
110
+ ALTER TABLE `test_tables`
111
+ ADD COLUMN `posted_at` datetime NOT NULL AFTER `created_at`;
112
+ --> 0.02903763700305717s
110
113
  ALTER TABLE `test_tables` ENGINE=MyISAM COMMENT='Table Comment Test';
111
- --> 0.01115s
114
+ --> 0.022911186999408528s
112
115
  SET FOREIGN_KEY_CHECKS=1;
113
- --> 0.000147s
116
+ --> 0.003360001996043138s
114
117
 
115
118
  $ mysql -u root example_database -e 'show create table test_tables\G'
116
119
 
@@ -315,4 +318,4 @@ $ bundle exec rspec
315
318
 
316
319
  ## Copyright
317
320
 
318
- Copyright © 2017 S.nishio. See LICENSE.txt for further details.
321
+ Copyright © 2014-2018 S.nishio. See LICENSE.txt for further details.
@@ -19,7 +19,9 @@ class Convergence::Command
19
19
  elsif @opts[:apply]
20
20
  Convergence::Command::Apply
21
21
  end
22
- unless execute_klass.nil?
22
+ if execute_klass.nil?
23
+ puts @opts
24
+ else
23
25
  execute_klass.new(@opts, config: @config).execute
24
26
  end
25
27
  end
@@ -6,7 +6,7 @@ class Convergence::Dumper
6
6
  end
7
7
 
8
8
  def dump_table_dsl(table)
9
- table_argument = [":#{table.table_name}"]
9
+ table_argument = [table.table_name.to_sym.inspect]
10
10
  table_argument << table.table_options.map { |k, v| key_value_text(k, v) }
11
11
  dsl = "create_table #{table_argument.flatten.join(', ')} do |t|\n"
12
12
  dsl += " #{table.columns.map { |_, column| dump_column(column) }.join("\n ")}"
@@ -27,7 +27,7 @@ class Convergence::Dumper
27
27
  private
28
28
 
29
29
  def dump_column(column)
30
- argument = [%(:#{column.column_name})]
30
+ argument = [column.column_name.to_sym.inspect]
31
31
  case [column.type, column.options[:limit]]
32
32
  when [:tinyint, '1']
33
33
  column_type = "boolean"
@@ -63,9 +63,9 @@ class Convergence::Dumper
63
63
  def single_or_multiple_symbol(values)
64
64
  values_array = [values].flatten
65
65
  if values_array.size == 1
66
- ":#{values_array.first}"
66
+ values_array.first.to_sym.inspect
67
67
  else
68
- %(#{values.map(&:to_sym)})
68
+ values.map(&:to_sym).inspect
69
69
  end
70
70
  end
71
71
 
@@ -79,6 +79,6 @@ class Convergence::Dumper
79
79
  end
80
80
 
81
81
  def key_value_symbol(k, v)
82
- "#{k}: :#{v}"
82
+ "#{k}: #{v.to_sym.inspect}"
83
83
  end
84
84
  end
@@ -15,9 +15,9 @@ class SQLGenerator::MysqlGenerator < SQLGenerator
15
15
  @original_table = original_table
16
16
  sqls = []
17
17
  sqls << change_table_sql(to_table, delta)
18
- sqls << ['']
19
18
  sqls << drop_table_sqls(delta)
20
19
  sqls << create_table_sqls(delta)
20
+ sqls.reject!(&:empty?)
21
21
  sqls.join("\n")
22
22
  end
23
23
 
@@ -53,6 +53,7 @@ class SQLGenerator::MysqlGenerator < SQLGenerator
53
53
  results << alter_change_table_sql(table_name, table_delta[:change_table_option])
54
54
  end
55
55
  end
56
+ results << '' unless results.empty?
56
57
  results
57
58
  end
58
59
 
@@ -1,3 +1,3 @@
1
1
  module Convergence
2
- VERSION = '0.2.5'
2
+ VERSION = '0.2.6'
3
3
  end
@@ -36,5 +36,35 @@ end
36
36
  dsl = Convergence::Dumper.new.dump_table_dsl(table1)
37
37
  expect(dsl).to eq(table1_dsl)
38
38
  end
39
+
40
+ context "when MySQL identifiers that require quotes in Ruby symbol syntax" do
41
+ let(:table1) do
42
+ Convergence::Table.new('dummy-table', engine: 'MyISAM').tap do |t|
43
+ t.int :id, limit: 11
44
+ t.varchar :"column-1", limit: 100, null: true, comment: 'column 1'
45
+
46
+ t.index :"column-1", name: 'idx_column-1'
47
+ t.foreign_key :"column-1", reference: 'dummy-ref', reference_column: :"dummy-column"
48
+ end
49
+ end
50
+
51
+ let(:table1_dsl) do
52
+ dsl = <<-DSL
53
+ create_table :"dummy-table", engine: "MyISAM" do |t|
54
+ t.int :id, limit: 11
55
+ t.varchar :"column-1", limit: 100, null: true, comment: "column 1"
56
+
57
+ t.index :"column-1", name: "idx_column-1"
58
+ t.foreign_key :"column-1", reference: :"dummy-ref", reference_column: :"dummy-column", name: "dummy-table_column-1_fk"
59
+ end
60
+ DSL
61
+ dsl.strip
62
+ end
63
+
64
+ it 'should be able to dump dsl' do
65
+ dsl = Convergence::Dumper.new.dump_table_dsl(table1)
66
+ expect(dsl).to eq(table1_dsl)
67
+ end
68
+ end
39
69
  end
40
70
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: convergence
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shinsuke Nishio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-20 00:00:00.000000000 Z
11
+ date: 2018-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2