我怎样才能刷新'帮助'在Mojolicious中的功能?

时间:2016-09-17 00:14:34

标签: perl mojolicious

有时我需要刷新"帮助"功能

一个例子: 如果数据库连接函数在辅助函数中,并且数据库访问权限发生了变化,并且我将此访问数据存储在sqlite数据库中,并且我覆盖了这些数据(在sqlite数据库中),我该如何在这种情况下刷新帮助器功能

1 个答案:

答案 0 :(得分:2)

我认为每次连接或重用主数据库的句柄时,都需要查询sqlite数据库中的更改。如果您注意到sqlite发生了更改,则需要断开与主服务器的连接,提取新凭据并使用新凭据重新连接到主服务器。

$app->helper(
    db => sub {
      my $self = shift;
      my $credentials_changed = your_function_to_check_this(...);
      if($credentials_changed){
        $dbh->disconnect if $dbh;
        return db_connect(
          $credentials->{db_host},     $credentials->{db_user},
          $credentials->{db_database}, $credentials->{db_pass}
       );
    }
);

sub db_connect {
  my ($db_host, $db_user, $db_database, $db_pass) = @_;
  my $dbh = 0;
  $dbh = DBI->connect("DBI:mysql:database=$db_database;host=$db_host", "$db_user", "$db_pass", {'RaiseError' => 1});
  $dbh->{mysql_auto_reconnect} = 1;
  return $dbh;
}