convergence 0.2.5 → 0.2.6

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: 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