ridgepole 0.6.4.beta5 → 0.6.4.beta6

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: 4ade1dcbc7f445d902258dd4f800d5753d44c2fc
4
- data.tar.gz: 10157b046ddc87eb64d77f6cc19476625ab25f0d
3
+ metadata.gz: 5656989ac8ac6af8579e4280dd2a62faeebd4251
4
+ data.tar.gz: 37efd93b1be528a4d2e15dd30e0c28ed52448d11
5
5
  SHA512:
6
- metadata.gz: 25133d89cc2b7b768c06e9166196df029e16af4eb49afb80f774513ed37a0e5d165dc9e7d3ae7b91d3eca87aed3b93f6d1060c3246899a5a87cf0650051f3c5f
7
- data.tar.gz: 4da5e0c7910df14d8873c84d18ceb24cd833a5a5b62c9eda883e0f054d211a567e9e8a7327cb883a3af098f88864ace7477c2a8978068a918b49fabfd41bcb71
6
+ metadata.gz: 5737d53986f3364fad3e6714055b8b35fa53da440034a9125bd3d3ef8babaa2982933b470b431b98df2c975f2c3359599a3fc64bb00a735987621b290ed39185
7
+ data.tar.gz: 4117e40778af880a1d74e0193f8d0fb3ec0f51e6e394a4b1e307452205af3346ba5ac70d6fbce514057a70f91e28461921a03ed9fb5f9dc7655668f89fdab154
data/.travis.yml CHANGED
@@ -13,10 +13,8 @@ script:
13
13
  - bundle exec rake
14
14
  env:
15
15
  matrix:
16
- - ENABLE_MYSQL_AWESOME=0 ENABLE_MIGRATION_COMMENTS=0
17
- - ENABLE_MYSQL_AWESOME=1 ENABLE_MIGRATION_COMMENTS=0
18
- - ENABLE_MYSQL_AWESOME=0 ENABLE_MIGRATION_COMMENTS=1
19
- - ENABLE_MYSQL_AWESOME=1 ENABLE_MIGRATION_COMMENTS=1
16
+ - ENABLE_MYSQL_AWESOME=0
17
+ - ENABLE_MYSQL_AWESOME=1
20
18
  - POSTGRESQL=1
21
19
  addons:
22
20
  postgresql: "9.4"
data/README.md CHANGED
@@ -48,6 +48,7 @@ It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.
48
48
  * Add `--alter-extra` option
49
49
  * Add `--dump-with-default-fk-name` option
50
50
  * Support `t.index` ([pull#64](https://github.com/winebarrel/ridgepole/pull/64))
51
+ * Remove migration_comments
51
52
 
52
53
  ## Installation
53
54
 
data/bin/ridgepole CHANGED
@@ -114,7 +114,6 @@ ARGV.options do |opt|
114
114
  opt.on('', '--dump-without-table-options') { options[:dump_without_table_options] = true }
115
115
  opt.on('', '--dump-with-default-fk-name') { options[:dumb_with_default_fk_name] = true }
116
116
  opt.on('', '--index-removed-drop-column') { options[:index_removed_drop_column] = true }
117
- opt.on('', '--enable-migration-comments') { options[:enable_migration_comments] = true }
118
117
  opt.on('-r', '--require LIBS', Array) {|v| v.each {|i| require i } }
119
118
  opt.on('' , '--log-file LOG_FILE') {|v| options[:log_file] = v }
120
119
  opt.on('' , '--verbose') { Ridgepole::Logger.verbose = true }
@@ -14,15 +14,7 @@ class Ridgepole::Client
14
14
  @parser = Ridgepole::DSLParser.new(@options)
15
15
  @diff = Ridgepole::Diff.new(@options)
16
16
 
17
- if @options[:enable_migration_comments]
18
- require 'migration_comments'
19
- end
20
-
21
17
  if @options[:enable_mysql_awesome]
22
- if @options[:enable_migration_comments]
23
- require 'ridgepole/ext/migration_comments'
24
- end
25
-
26
18
  require 'activerecord/mysql/awesome/base'
27
19
  end
28
20
 
@@ -5,6 +5,48 @@ class Ridgepole::ExecuteExpander
5
5
  end
6
6
  end
7
7
 
8
+ module ConnectionAdapterExt
9
+ def execute(sql, name = nil)
10
+ if Ridgepole::ExecuteExpander.noop
11
+ if (callback = Ridgepole::ExecuteExpander.callback)
12
+ sql = append_alter_extra(sql)
13
+ callback.call(sql, name)
14
+ end
15
+
16
+ if sql =~ /\A(SELECT|SHOW)\b/i
17
+ begin
18
+ super(sql, name)
19
+ rescue => e
20
+ Stub.new
21
+ end
22
+ else
23
+ Stub.new
24
+ end
25
+ elsif Ridgepole::ExecuteExpander.use_script
26
+ if sql =~ /\A(SELECT|SHOW)\b/i
27
+ super(sql, name)
28
+ else
29
+ sql = append_alter_extra(sql)
30
+ Ridgepole::ExecuteExpander.sql_executer.execute(sql)
31
+ nil
32
+ end
33
+ else
34
+ sql = append_alter_extra(sql)
35
+ super(sql, name)
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ def append_alter_extra(sql)
42
+ if Ridgepole::ExecuteExpander.alter_extra and sql =~ /\AALTER\b/i
43
+ sql = sql + ',' + Ridgepole::ExecuteExpander.alter_extra
44
+ end
45
+
46
+ sql
47
+ end
48
+ end
49
+
8
50
  cattr_accessor :noop, :instance_writer => false, :instance_reader => false
9
51
  cattr_accessor :callback, :instance_writer => false, :instance_reader => false
10
52
  cattr_accessor :use_script, :instance_writer => false, :instance_reader => false
@@ -44,71 +86,11 @@ class Ridgepole::ExecuteExpander
44
86
  end
45
87
 
46
88
  def expand_execute(connection)
47
- return if connection.respond_to?(:execute_with_ext)
48
-
49
- class << connection
50
- def execute_with_ext(sql, name = nil)
51
- if Ridgepole::ExecuteExpander.noop
52
- if (callback = Ridgepole::ExecuteExpander.callback)
53
- sql = append_alter_extra(sql)
54
- callback.call(sql, name)
55
- end
89
+ return if connection.is_a?(ConnectionAdapterExt)
56
90
 
57
- if sql =~ /\A(SELECT|SHOW)\b/i
58
- begin
59
- execute_without_ext(sql, name)
60
- rescue => e
61
- Stub.new
62
- end
63
- else
64
- Stub.new
65
- end
66
- elsif Ridgepole::ExecuteExpander.use_script
67
- if sql =~ /\A(SELECT|SHOW)\b/i
68
- execute_without_ext(sql, name)
69
- else
70
- sql = append_alter_extra(sql)
71
- Ridgepole::ExecuteExpander.sql_executer.execute(sql)
72
- nil
73
- end
74
- else
75
- sql = append_alter_extra(sql)
76
- execute_without_ext(sql, name)
77
- end
78
- end
79
- alias_method_chain :execute, :ext
80
-
81
- private
82
-
83
- def append_alter_extra(sql)
84
- if Ridgepole::ExecuteExpander.alter_extra and sql =~ /\AALTER\b/i
85
- sql = sql + ',' + Ridgepole::ExecuteExpander.alter_extra
86
- end
87
-
88
- sql
89
- end
91
+ connection.class_eval do
92
+ prepend ConnectionAdapterExt
90
93
  end
91
94
  end
92
95
  end # of class methods
93
96
  end
94
-
95
- require 'active_record/connection_adapters/abstract/schema_statements'
96
-
97
- module ActiveRecord::ConnectionAdapters::SchemaStatements
98
- def index_name_exists_with_noop?(table_name, column_name, options = {})
99
- if Ridgepole::ExecuteExpander.noop
100
- caller_methods = caller.map {|i| i =~ /:\d+:in `(.+)'/ ? $1 : '' }
101
-
102
- if caller_methods.any? {|i| i =~ /\Aremove_index/ }
103
- true
104
- elsif caller_methods.any? {|i| i =~ /\Aadd_index/ }
105
- false
106
- else
107
- index_name_exists_without_noop?(table_name, column_name, options)
108
- end
109
- else
110
- index_name_exists_without_noop?(table_name, column_name, options)
111
- end
112
- end
113
- alias_method_chain :index_name_exists?, :noop
114
- end
@@ -1,16 +1,26 @@
1
1
  require 'active_record/connection_adapters/abstract_mysql_adapter'
2
2
 
3
- class ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
4
- def add_index_with_alter(table_name, column_name, options = {})
5
- index_name, index_type, index_columns, index_options, index_algorithm, index_using = add_index_options(table_name, column_name, options)
3
+ module Ridgepole
4
+ module Ext
5
+ module AbstractMysqlAdapter
6
+ def add_index(table_name, column_name, options = {})
7
+ index_name, index_type, index_columns, index_options, index_algorithm, index_using = add_index_options(table_name, column_name, options)
6
8
 
7
- # cannot specify index_algorithm
8
- execute "ALTER TABLE #{quote_table_name(table_name)} ADD #{index_type} INDEX #{quote_column_name(index_name)} #{index_using} (#{index_columns})#{index_options}"
9
+ # cannot specify index_algorithm
10
+ execute "ALTER TABLE #{quote_table_name(table_name)} ADD #{index_type} INDEX #{quote_column_name(index_name)} #{index_using} (#{index_columns})#{index_options}"
11
+ end
12
+
13
+ def remove_index!(table_name, index_name)
14
+ execute "ALTER TABLE #{quote_table_name(table_name)} DROP INDEX #{quote_column_name(index_name)}"
15
+ end
16
+ end
9
17
  end
10
- alias_method_chain :add_index, :alter
18
+ end
11
19
 
12
- def remove_index_with_alter!(table_name, index_name)
13
- execute "ALTER TABLE #{quote_table_name(table_name)} DROP INDEX #{quote_column_name(index_name)}"
20
+ module ActiveRecord
21
+ module ConnectionAdapters
22
+ class AbstractMysqlAdapter
23
+ include Ridgepole::Ext::AbstractMysqlAdapter
24
+ end
14
25
  end
15
- alias_method_chain :remove_index!, :alter
16
26
  end
@@ -1,32 +1,41 @@
1
1
  require 'active_record/schema_dumper'
2
2
 
3
- class ActiveRecord::SchemaDumper
4
- def foreign_keys_with_default_name(table, stream)
5
- if (foreign_keys = @connection.foreign_keys(table)).any?
6
- add_foreign_key_statements = foreign_keys.map do |foreign_key|
7
- parts = [
8
- "add_foreign_key #{remove_prefix_and_suffix(foreign_key.from_table).inspect}",
9
- remove_prefix_and_suffix(foreign_key.to_table).inspect,
10
- ]
11
-
12
- if foreign_key.column != @connection.foreign_key_column_for(foreign_key.to_table)
13
- parts << "column: #{foreign_key.column.inspect}"
14
- end
3
+ module Ridgepole
4
+ module Ext
5
+ module SchemaDumper
6
+ def foreign_keys(table, stream)
7
+ if (foreign_keys = @connection.foreign_keys(table)).any?
8
+ add_foreign_key_statements = foreign_keys.map do |foreign_key|
9
+ parts = [
10
+ "add_foreign_key #{remove_prefix_and_suffix(foreign_key.from_table).inspect}",
11
+ remove_prefix_and_suffix(foreign_key.to_table).inspect,
12
+ ]
15
13
 
16
- if foreign_key.custom_primary_key?
17
- parts << "primary_key: #{foreign_key.primary_key.inspect}"
18
- end
14
+ if foreign_key.column != @connection.foreign_key_column_for(foreign_key.to_table)
15
+ parts << "column: #{foreign_key.column.inspect}"
16
+ end
19
17
 
20
- parts << "name: #{foreign_key.name.inspect}"
18
+ if foreign_key.custom_primary_key?
19
+ parts << "primary_key: #{foreign_key.primary_key.inspect}"
20
+ end
21
21
 
22
- parts << "on_update: #{foreign_key.on_update.inspect}" if foreign_key.on_update
23
- parts << "on_delete: #{foreign_key.on_delete.inspect}" if foreign_key.on_delete
22
+ parts << "name: #{foreign_key.name.inspect}"
24
23
 
25
- " #{parts.join(', ')}"
26
- end
24
+ parts << "on_update: #{foreign_key.on_update.inspect}" if foreign_key.on_update
25
+ parts << "on_delete: #{foreign_key.on_delete.inspect}" if foreign_key.on_delete
27
26
 
28
- stream.puts add_foreign_key_statements.sort.join("\n")
27
+ " #{parts.join(', ')}"
28
+ end
29
+
30
+ stream.puts add_foreign_key_statements.sort.join("\n")
31
+ end
32
+ end
29
33
  end
30
34
  end
31
- alias_method_chain :foreign_keys, :default_name
35
+ end
36
+
37
+ module ActiveRecord
38
+ class SchemaDumper
39
+ prepend Ridgepole::Ext::SchemaDumper
40
+ end
32
41
  end
@@ -1,58 +1,69 @@
1
1
  require 'active_record/migration'
2
2
 
3
- class ActiveRecord::Migration
4
- cattr_accessor :time_recorder
5
- cattr_accessor :disable_logging
6
-
7
- def write_with_logging(text = '')
8
- logger = Ridgepole::Logger.instance
9
- logger.info(text) unless self.disable_logging
10
- parse_text(text)
11
- end
12
- alias_method_chain :write, :logging
13
-
14
- def parse_text(text)
15
- return unless self.time_recorder
3
+ module Ridgepole
4
+ module MigrationExt
5
+ def self.included(klass)
6
+ klass.class_eval do
7
+ cattr_accessor :time_recorder
8
+ cattr_accessor :disable_logging
9
+ end
10
+ end
16
11
 
17
- case text
18
- when /\A--\s+(.+)\Z/
19
- self.time_recorder.add_key($1)
20
- when /\A\s+->\s+(\d+\.\d+)s\Z/
21
- self.time_recorder.add_value($1.to_f)
12
+ def write(text = '')
13
+ logger = Ridgepole::Logger.instance
14
+ logger.info(text) unless self.disable_logging
15
+ parse_text(text)
22
16
  end
23
- end
24
17
 
25
- def self.record_time
26
- result = nil
18
+ def parse_text(text)
19
+ return unless self.time_recorder
27
20
 
28
- begin
29
- self.time_recorder = TimeRecorder.new
30
- yield
31
- result = self.time_recorder.result
32
- ensure
33
- self.time_recorder = nil
21
+ case text
22
+ when /\A--\s+(.+)\Z/
23
+ self.time_recorder.add_key($1)
24
+ when /\A\s+->\s+(\d+\.\d+)s\Z/
25
+ self.time_recorder.add_value($1.to_f)
26
+ end
34
27
  end
35
28
 
36
- return result
37
- end
29
+ def self.record_time
30
+ result = nil
38
31
 
39
- class TimeRecorder
40
- attr_reader :result
32
+ begin
33
+ self.time_recorder = TimeRecorder.new
34
+ yield
35
+ result = self.time_recorder.result
36
+ ensure
37
+ self.time_recorder = nil
38
+ end
41
39
 
42
- def initialize
43
- @result = {}
40
+ result
44
41
  end
45
42
 
46
- def add_key(key)
47
- @key = key
48
- end
43
+ class TimeRecorder
44
+ attr_reader :result
45
+
46
+ def initialize
47
+ @result = {}
48
+ end
49
49
 
50
- def add_value(value)
51
- if @key
52
- @result[@key] = value
50
+ def add_key(key)
51
+ @key = key
53
52
  end
54
53
 
55
- @key = nil
54
+ def add_value(value)
55
+ if @key
56
+ @result[@key] = value
57
+ end
58
+
59
+ @key = nil
60
+ end
56
61
  end
57
62
  end
58
63
  end
64
+
65
+ module ActiveRecord
66
+ class Migration
67
+ include Ridgepole::MigrationExt
68
+ end
69
+ end
@@ -1,10 +1,17 @@
1
1
  require 'active_record/schema_dumper'
2
2
 
3
- class ActiveRecord::SchemaDumper
4
- def table_with_logging(table, stream)
5
- logger = Ridgepole::Logger.instance
6
- logger.verbose_info("# #{table}")
7
- table_without_logging(table, stream)
3
+ module Ridgepole
4
+ module SchemaDumperExt
5
+ def table(table, stream)
6
+ logger = Ridgepole::Logger.instance
7
+ logger.verbose_info("# #{table}")
8
+ super
9
+ end
10
+ end
11
+ end
12
+
13
+ module ActiveRecord
14
+ class SchemaDumper
15
+ prepend Ridgepole::SchemaDumperExt
8
16
  end
9
- alias_method_chain :table, :logging
10
17
  end
@@ -1,9 +1,32 @@
1
1
  require 'active_record/connection_adapters/abstract/schema_statements'
2
2
 
3
- module ActiveRecord::ConnectionAdapters::SchemaStatements
4
- def rename_table_indexes_with_ignore(table_name, new_name)
5
- # Nothing to do
3
+ module Ridgepole
4
+ module SchemaStatementsExt
5
+ def index_name_exists?(table_name, column_name, options = {})
6
+ if Ridgepole::ExecuteExpander.noop
7
+ caller_methods = caller.map {|i| i =~ /:\d+:in `(.+)'/ ? $1 : '' }
8
+ if caller_methods.any? {|i| i =~ /\Aremove_index/ }
9
+ true
10
+ elsif caller_methods.any? {|i| i =~ /\Aadd_index/ }
11
+ false
12
+ else
13
+ super
14
+ end
15
+ else
16
+ super
17
+ end
18
+ end
19
+
20
+ def rename_table_indexes(table_name, new_name)
21
+ # Nothing to do
22
+ end
6
23
  end
24
+ end
7
25
 
8
- alias_method_chain :rename_table_indexes, :ignore
26
+ module ActiveRecord
27
+ module ConnectionAdapters
28
+ class AbstractAdapter
29
+ include Ridgepole::SchemaStatementsExt
30
+ end
31
+ end
9
32
  end
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.6.4.beta5'
2
+ VERSION = '0.6.4.beta6'
3
3
  end
data/ridgepole.gemspec CHANGED
@@ -26,5 +26,4 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'pg'
27
27
  spec.add_development_dependency 'coveralls'
28
28
  spec.add_development_dependency 'activerecord-mysql-awesome', '>= 0.0.7'
29
- spec.add_development_dependency 'migration_comments'
30
29
  end
@@ -42,7 +42,6 @@ describe 'ridgepole' do
42
42
  --dump-without-table-options
43
43
  --dump-with-default-fk-name
44
44
  --index-removed-drop-column
45
- --enable-migration-comments
46
45
  -r, --require LIBS
47
46
  --log-file LOG_FILE
48
47
  --verbose
data/spec/spec_helper.rb CHANGED
@@ -210,10 +210,6 @@ def mysql_awesome_enabled?
210
210
  ENV['ENABLE_MYSQL_AWESOME'] == '1'
211
211
  end
212
212
 
213
- def migration_comments_enabled?
214
- ENV['ENABLE_MIGRATION_COMMENTS'] == '1'
215
- end
216
-
217
213
  def postgresql?
218
214
  ENV['POSTGRESQL'] == '1'
219
215
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridgepole
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4.beta5
4
+ version: 0.6.4.beta6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
@@ -14,128 +14,114 @@ dependencies:
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 4.2.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.2.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: 3.0.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: 3.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mysql2
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.3.20
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.3.20
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pg
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: coveralls
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: activerecord-mysql-awesome
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: 0.0.7
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: 0.0.7
125
- - !ruby/object:Gem::Dependency
126
- name: migration_comments
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - '>='
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
125
  description: Ridgepole is a tool to manage DB schema. It defines DB schema using Rails
140
126
  DSL, and updates DB schema according to DSL.
141
127
  email:
@@ -145,9 +131,9 @@ executables:
145
131
  extensions: []
146
132
  extra_rdoc_files: []
147
133
  files:
148
- - .gitignore
149
- - .rspec
150
- - .travis.yml
134
+ - ".gitignore"
135
+ - ".rspec"
136
+ - ".travis.yml"
151
137
  - Gemfile
152
138
  - LICENSE.txt
153
139
  - README.md
@@ -163,7 +149,6 @@ files:
163
149
  - lib/ridgepole/dumper.rb
164
150
  - lib/ridgepole/execute_expander.rb
165
151
  - lib/ridgepole/ext/abstract_mysql_adapter.rb
166
- - lib/ridgepole/ext/migration_comments.rb
167
152
  - lib/ridgepole/ext/schema_dumper.rb
168
153
  - lib/ridgepole/external_sql_executer.rb
169
154
  - lib/ridgepole/logger.rb
@@ -172,8 +157,6 @@ files:
172
157
  - lib/ridgepole/schema_statements_ext.rb
173
158
  - lib/ridgepole/version.rb
174
159
  - ridgepole.gemspec
175
- - spec/mysql/0_comment/comment_mysql_awesome_spec.rb
176
- - spec/mysql/0_comment/comment_spec.rb
177
160
  - spec/mysql/bigint_pk/bigint_pkspec.rb
178
161
  - spec/mysql/cli/config_spec.rb
179
162
  - spec/mysql/cli/ridgepole_spec.rb
@@ -275,23 +258,21 @@ require_paths:
275
258
  - lib
276
259
  required_ruby_version: !ruby/object:Gem::Requirement
277
260
  requirements:
278
- - - '>='
261
+ - - ">="
279
262
  - !ruby/object:Gem::Version
280
263
  version: '0'
281
264
  required_rubygems_version: !ruby/object:Gem::Requirement
282
265
  requirements:
283
- - - '>'
266
+ - - ">"
284
267
  - !ruby/object:Gem::Version
285
268
  version: 1.3.1
286
269
  requirements: []
287
270
  rubyforge_project:
288
- rubygems_version: 2.0.14.1
271
+ rubygems_version: 2.4.5.1
289
272
  signing_key:
290
273
  specification_version: 4
291
274
  summary: Ridgepole is a tool to manage DB schema.
292
275
  test_files:
293
- - spec/mysql/0_comment/comment_mysql_awesome_spec.rb
294
- - spec/mysql/0_comment/comment_spec.rb
295
276
  - spec/mysql/bigint_pk/bigint_pkspec.rb
296
277
  - spec/mysql/cli/config_spec.rb
297
278
  - spec/mysql/cli/ridgepole_spec.rb
@@ -1,37 +0,0 @@
1
- require 'migration_comments/active_record/schema_dumper'
2
-
3
- module MigrationComments::ActiveRecord
4
- module SchemaDumper
5
- def append_comments(table, stream)
6
- table_name = table.inspect.gsub('"', '')
7
- column_comments = @connection.retrieve_column_comments(table_name)
8
- comment_stream = StringIO.new
9
- lines = []
10
- col_names = {}
11
-
12
- while (line = stream.gets)
13
- content = line.chomp
14
-
15
- if content =~ /t\.\w+\s+"(\w+)"/
16
- col_names[lines.size] = $1.to_sym
17
- end
18
-
19
- lines << content
20
- end
21
-
22
- len = col_names.keys.map{|index| lines[index]}.map(&:length).max + 2 unless col_names.empty?
23
-
24
- lines.each_with_index do |line, index|
25
- if col_names[index]
26
- comment = column_comments[col_names[index]]
27
- line << ' ' * (len - line.length) << "# #{comment}" unless comment.blank?
28
- end
29
-
30
- comment_stream.puts line
31
- end
32
-
33
- comment_stream.rewind
34
- comment_stream
35
- end
36
- end
37
- end
@@ -1,45 +0,0 @@
1
- unless postgresql?
2
- if migration_comments_enabled?
3
- if mysql_awesome_enabled?
4
- describe 'Ridgepole::Client#diff -> migrate' do
5
- context 'when change column (add comment)' do
6
- let(:dsl) {
7
- <<-RUBY
8
- create_table "employee_clubs", unsigned: true, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='テーブルコメント'" do |t|
9
- t.integer "emp_no", limit: 4, null: false, unsigned: true
10
- t.integer "club_id", limit: 4, null: false
11
- t.string "string", limit: 255, null: false, collation: "utf8mb4_bin" # カラムコメント
12
- t.text "text", limit: 65535, null: false
13
- end
14
- RUBY
15
- }
16
-
17
- before do
18
- subject.diff('').migrate
19
-
20
- ActiveRecord::Base.connection.raw_connection.query(<<-EOS)
21
- CREATE TABLE `employee_clubs` (
22
- `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
23
- `emp_no` int(11) unsigned NOT NULL ,
24
- `club_id` int(11) NOT NULL ,
25
- `string` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'カラムコメント',
26
- `text` text NOT NULL,
27
- PRIMARY KEY (`id`)
28
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='テーブルコメント';
29
- EOS
30
- end
31
-
32
- subject do
33
- client(enable_migration_comments: true, dump_without_table_options: false)
34
- end
35
-
36
- it {
37
- delta = subject.diff(dsl)
38
- expect(delta.differ?).to be_falsey
39
- expect(subject.dump).to eq dsl.strip_heredoc.strip
40
- }
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,183 +0,0 @@
1
- unless postgresql?
2
- if migration_comments_enabled?
3
- unless mysql_awesome_enabled?
4
- describe 'Ridgepole::Client#diff -> migrate' do
5
- context 'when change column (add comment)' do
6
- let(:actual_dsl) {
7
- <<-RUBY
8
- create_table "employee_clubs", force: :cascade do |t|
9
- t.integer "emp_no", limit: 4, null: false
10
- t.integer "club_id", limit: 4, null: false
11
- t.string "string", limit: 255, null: false
12
- t.text "text", limit: 65535, null: false
13
- end
14
- RUBY
15
- }
16
-
17
- let(:expected_dsl) {
18
- <<-RUBY
19
- create_table "employee_clubs", force: :cascade do |t|
20
- t.integer "emp_no", limit: 4, null: false, comment: "any comment"
21
- t.integer "club_id", limit: 4, null: false, comment: "any comment2"
22
- t.string "string", limit: 255, null: false, comment: "any comment3"
23
- t.text "text", limit: 65535, null: false, comment: "any comment4"
24
- end
25
- RUBY
26
- }
27
-
28
- before { subject.diff(actual_dsl).migrate }
29
- subject { client(enable_migration_comments: true) }
30
-
31
- it {
32
- delta = subject.diff(expected_dsl)
33
- expect(delta.differ?).to be_truthy
34
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
35
- delta.migrate
36
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
37
- }
38
- end
39
-
40
- context 'when change column (delete comment)' do
41
- let(:actual_dsl) {
42
- <<-RUBY
43
- create_table "employee_clubs", force: :cascade do |t|
44
- t.integer "emp_no", limit: 4, null: false, comment: "any comment"
45
- t.integer "club_id", limit: 4, null: false, comment: "any comment2"
46
- t.string "string", limit: 255, null: false, comment: "any comment3"
47
- t.text "text", limit: 65535, null: false, comment: "any comment4"
48
- end
49
- RUBY
50
- }
51
-
52
- let(:expected_dsl) {
53
- <<-RUBY
54
- create_table "employee_clubs", force: :cascade do |t|
55
- t.integer "emp_no", limit: 4, null: false
56
- t.integer "club_id", limit: 4, null: false
57
- t.string "string", limit: 255, null: false
58
- t.text "text", limit: 65535, null: false
59
- end
60
- RUBY
61
- }
62
-
63
- before { subject.diff(actual_dsl).migrate }
64
- subject { client(enable_migration_comments: true) }
65
-
66
- it {
67
- delta = subject.diff(expected_dsl)
68
- expect(delta.differ?).to be_truthy
69
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
70
- delta.migrate
71
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
72
- }
73
- end
74
-
75
- context 'when change column (change comment)' do
76
- let(:actual_dsl) {
77
- <<-RUBY
78
- create_table "employee_clubs", force: :cascade do |t|
79
- t.integer "emp_no", limit: 4, null: false, comment: "any comment"
80
- t.integer "club_id", limit: 4, null: false, comment: "any comment2"
81
- t.string "string", limit: 255, null: false, comment: "any comment3"
82
- t.text "text", limit: 65535, null: false, comment: "any comment4"
83
- end
84
- RUBY
85
- }
86
-
87
- let(:expected_dsl) {
88
- <<-RUBY
89
- create_table "employee_clubs", force: :cascade do |t|
90
- t.integer "emp_no", limit: 4, null: false, comment: "other comment"
91
- t.integer "club_id", limit: 4, null: false, comment: "other comment2"
92
- t.string "string", limit: 255, null: false, comment: "other comment3"
93
- t.text "text", limit: 65535, null: false, comment: "other comment4"
94
- end
95
- RUBY
96
- }
97
-
98
- before { subject.diff(actual_dsl).migrate }
99
- subject { client(enable_migration_comments: true) }
100
-
101
- it {
102
- delta = subject.diff(expected_dsl)
103
- expect(delta.differ?).to be_truthy
104
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
105
- delta.migrate
106
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
107
- }
108
- end
109
-
110
- context 'when change column (no change comment)' do
111
- let(:actual_dsl) {
112
- <<-RUBY
113
- create_table "employee_clubs", force: :cascade do |t|
114
- t.integer "emp_no", limit: 4, null: false, comment: "any comment"
115
- t.integer "club_id", limit: 4, null: false, comment: "any comment2"
116
- t.string "string", limit: 255, null: false, comment: "any comment3"
117
- t.text "text", limit: 65535, null: false, comment: "any comment4"
118
- end
119
- RUBY
120
- }
121
-
122
- before { subject.diff(actual_dsl).migrate }
123
- subject { client(enable_migration_comments: true) }
124
-
125
- it {
126
- delta = subject.diff(actual_dsl)
127
- expect(delta.differ?).to be_falsey
128
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
129
- delta.migrate
130
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
131
- }
132
- end
133
-
134
- context 'when create table (with comment)' do
135
- let(:expected_dsl) {
136
- <<-RUBY
137
- create_table "employee_clubs", force: :cascade, comment: "table comment" do |t|
138
- t.integer "emp_no", limit: 4, null: false, comment: "other comment"
139
- t.integer "club_id", limit: 4, null: false, comment: "other comment2"
140
- t.string "string", limit: 255, null: false, comment: "other comment3"
141
- t.text "text", limit: 65535, null: false, comment: "other comment4"
142
- end
143
- RUBY
144
- }
145
-
146
- subject { client(enable_migration_comments: true) }
147
-
148
- it {
149
- delta = subject.diff(expected_dsl)
150
- expect(delta.differ?).to be_truthy
151
- expect(subject.dump.strip).to be_empty
152
- delta.migrate
153
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
154
- }
155
- end
156
-
157
- context 'when drop table (with comment)' do
158
- let(:actual_dsl) {
159
- <<-RUBY
160
- create_table "employee_clubs", force: :cascade, comment: "table comment" do |t|
161
- t.integer "emp_no", limit: 4, null: false, comment: "other comment"
162
- t.integer "club_id", limit: 4, null: false, comment: "other comment2"
163
- t.string "string", limit: 255, null: false, comment: "other comment3"
164
- t.text "text", limit: 65535, null: false, comment: "other comment4"
165
- end
166
- RUBY
167
- }
168
-
169
- before { subject.diff(actual_dsl).migrate }
170
- subject { client(enable_migration_comments: true) }
171
-
172
- it {
173
- delta = subject.diff('')
174
- expect(delta.differ?).to be_truthy
175
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
176
- delta.migrate
177
- expect(subject.dump).to be_empty
178
- }
179
- end
180
- end
181
- end
182
- end
183
- end