From: hylom Date: Fri, 9 Sep 2016 11:42:54 +0000 (+0900) Subject: Controller::Base: fix to use utf8mb4 X-Git-Tag: v0.1.0~330 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=8557bedf9951e089cf3b654921896a66e6b65ed3;p=newslash%2Fnewslash.git Controller::Base: fix to use utf8mb4 --- diff --git a/Dockerfile b/Dockerfile index b29a3b9b..c3ba15d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/dev/newslash_web/lib/Newslash/Model/Base.pm b/dev/newslash_web/lib/Newslash/Model/Base.pm index db2d80af..ac46945b 100644 --- a/dev/newslash_web/lib/Newslash/Model/Base.pm +++ b/dev/newslash_web/lib/Newslash/Model/Base.pm @@ -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 index 00000000..b92222b9 --- /dev/null +++ b/newslash.cnf @@ -0,0 +1,2 @@ +[libmysqlclient] +default-character-set = utf8mb4