OSDN Git Service

Model::Base: connect_db can accept options argument
authorhylom <hylom@users.sourceforge.jp>
Mon, 3 Oct 2016 13:34:07 +0000 (22:34 +0900)
committerhylom <hylom@users.sourceforge.jp>
Mon, 3 Oct 2016 13:34:07 +0000 (22:34 +0900)
dev/newslash_web/lib/Newslash/Model/Base.pm

index b9aed95..298bee6 100644 (file)
@@ -33,26 +33,28 @@ sub new {
 }
 
 sub connect_db {
-  my $self = shift @_;
+    my $self = shift;
+    my $options = shift || {};
 
-  my $DB_HOST = $self->{options}->{host};
-  my $DB_NAME = $self->{options}->{name};
-  my $DB_USER = $self->{options}->{user};
-  my $DB_PASSWORD = $self->{options}->{password};
+    my $DB_HOST = $self->{options}->{host};
+    my $DB_NAME = $self->{options}->{name};
+    my $DB_USER = $self->{options}->{user};
+    my $DB_PASSWORD = $self->{options}->{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 $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;
+                              }
+                             },
+                %$options,
+               };
 
-  my $dbh = DBI->connect("DBI:mysql:$DB_NAME:$DB_HOST;$settings", $DB_USER, $DB_PASSWORD, $attr);
-  return $dbh;
+    my $dbh = DBI->connect("DBI:mysql:$DB_NAME:$DB_HOST;$settings", $DB_USER, $DB_PASSWORD, $attr);
+    return $dbh;
 
 }