OSDN Git Service

Controller::Base: fix to use utf8mb4
authorhylom <hylom@users.sourceforge.jp>
Fri, 9 Sep 2016 11:42:54 +0000 (20:42 +0900)
committerhylom <hylom@users.sourceforge.jp>
Fri, 9 Sep 2016 12:54:16 +0000 (21:54 +0900)
Dockerfile
dev/newslash_web/lib/Newslash/Model/Base.pm
newslash.cnf [new file with mode: 0644]

index b29a3b9..c3ba15d 100644 (file)
@@ -6,6 +6,8 @@ RUN apt-get install -y vim-nox lv less libmojolicious-perl
 RUN apt-get install -y libjs-bootstrap libdbd-mysql libdbi-perl \
     libdbd-mysql-perl libtemplate-perl node-less
 
+COPY newslash.cnf /etc/mysql/conf.d/
+
 EXPOSE 80
 
 
index db2d80a..ac46945 100644 (file)
@@ -1,4 +1,8 @@
 package Newslash::Model::Base;
+use strict;
+use warnings;
+use utf8;
+use feature ':5.10';
 
 use DBI;
 
@@ -12,7 +16,18 @@ sub new { bless {}, shift }
 sub connect_db {
   my $self = shift @_;
 
-  my $dbh = DBI->connect("DBI:mysql:$DB_NAME:$DB_HOST", $DB_USER, $DB_PASSWORD);
+  my $settings = 'mysql_read_default_group=libmysqlclient;mysql_read_default_file=/etc/mysql/my.cnf';
+  my $attr = {
+             mysql_enable_utf8 => 1,
+             Callbacks => { # hack to use utf8mb4. see http://d.hatena.ne.jp/hirose31/20141028/1414496347
+                           connected => sub {
+                             shift->do('SET NAMES utf8mb4');
+                             return;
+                           }
+                          },
+            };
+
+  my $dbh = DBI->connect("DBI:mysql:$DB_NAME:$DB_HOST;$settings", $DB_USER, $DB_PASSWORD, $attr);
   return $dbh;
 
 }
diff --git a/newslash.cnf b/newslash.cnf
new file mode 100644 (file)
index 0000000..b92222b
--- /dev/null
@@ -0,0 +1,2 @@
+[libmysqlclient]
+default-character-set = utf8mb4