}
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;
}