Retire ar_mysql_column_charset

Rails 5 has native support for charset/collate.

Akinori MUSHA 7 years ago
parent
commit
ba0d2ee0de

+ 0 - 1
config/initializers/ar_mysql_column_charset.rb

@@ -1 +0,0 @@
1
-require 'ar_mysql_column_charset'

+ 0 - 13
lib/ar_mysql_column_charset.rb

@@ -1,13 +0,0 @@
1
-require 'active_support'
2
-
3
-ActiveSupport.on_load :active_record do
4
-  class << ActiveRecord::Base
5
-    def establish_connection(spec = nil)
6
-      super.tap { |ret|
7
-        if /mysql/i === connection.adapter_name
8
-          require 'ar_mysql_column_charset/main'
9
-        end
10
-      }
11
-    end
12
-  end
13
-end

+ 0 - 118
lib/ar_mysql_column_charset/main.rb

@@ -1,118 +0,0 @@
1
-raise "Do not directly load this library." unless defined?(ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter)
2
-
3
-module ActiveRecord::ConnectionAdapters
4
-  class ColumnDefinition
5
-    module CharsetSupport
6
-      attr_accessor :charset, :collation
7
-    end
8
-
9
-    prepend CharsetSupport
10
-  end
11
-
12
-  class TableDefinition
13
-    module CharsetSupport
14
-      def new_column_definition(name, type, options)
15
-        column = super
16
-        column.charset   = options[:charset]
17
-        column.collation = options[:collation]
18
-        column
19
-      end
20
-    end
21
-
22
-    prepend CharsetSupport
23
-  end
24
-
25
-  class AbstractMysqlAdapter
26
-    module CharsetSupport
27
-      def prepare_column_options(column, types)
28
-        spec = super
29
-        spec[:charset]   = column.charset.inspect if column.charset && column.charset != charset
30
-        spec[:collation] = column.collation.inspect if column.collation && column.collation != collation
31
-        spec
32
-      end
33
-
34
-      def migration_keys
35
-        super + [:charset, :collation]
36
-      end
37
-
38
-      def utf8mb4_supported?
39
-        if @utf8mb4_supported.nil?
40
-          @utf8mb4_supported = !select("show character set like 'utf8mb4'").empty?
41
-        else
42
-          @utf8mb4_supported
43
-        end
44
-      end
45
-
46
-      def charset_collation(charset, collation)
47
-        [charset, collation].map { |name|
48
-          case name
49
-          when nil
50
-            nil
51
-          when /\A(utf8mb4(_\w*)?)\z/
52
-            if utf8mb4_supported?
53
-              $1
54
-            else
55
-              "utf8#{$2}"
56
-            end
57
-          else
58
-            name.to_s
59
-          end
60
-        }
61
-      end
62
-
63
-      def create_database(name, options = {})
64
-        # utf8mb4 is used in column definitions; use utf8 for
65
-        # databases.
66
-        [:charset, :collation].each { |key|
67
-          case options[key]
68
-          when /\A(utf8mb4(_\w*)?)\z/
69
-            options = options.merge(key => "utf8#{$2}")
70
-          end
71
-        }
72
-        super(name, options)
73
-      end
74
-    end
75
-
76
-    prepend CharsetSupport
77
-
78
-    class SchemaCreation
79
-      module CharsetSupport
80
-        def column_options(o)
81
-          column_options = super
82
-          column_options[:charset]   = o.charset unless o.charset.nil?
83
-          column_options[:collation] = o.collation unless o.collation.nil?
84
-          column_options
85
-        end
86
-
87
-        def add_column_options!(sql, options)
88
-          charset, collation = @conn.charset_collation(options[:charset], options[:collation])
89
-
90
-          if charset
91
-            sql << " CHARACTER SET #{charset}"
92
-          end
93
-
94
-          if collation
95
-            sql << " COLLATE #{collation}"
96
-          end
97
-
98
-          super
99
-        end
100
-      end
101
-
102
-      prepend CharsetSupport
103
-    end
104
-
105
-    class Column
106
-      module CharsetSupport
107
-        attr_reader :charset
108
-
109
-        def initialize(*args)
110
-          super
111
-          @charset = @collation[/\A[^_]+/] unless @collation.nil?
112
-        end
113
-      end
114
-
115
-      prepend CharsetSupport
116
-    end
117
-  end
118
-end

+ 0 - 1
lib/tasks/ar_mysql_column_charset.rake

@@ -1 +0,0 @@
1
-require 'ar_mysql_column_charset'