ridgepole 0.6.4.beta5 → 0.6.4.beta6

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