Use the mojolicious plugin instead of rolling our own config loader.
authorVincent Tondellier <tonton+hg@team1664.org>
Tue, 19 Aug 2014 23:51:31 +0200
changeset 43 6070307efd38
parent 42 604ffca3aec1
child 44 a5c677eb8329
Use the mojolicious plugin instead of rolling our own config loader. Fix Perl::Critic complaints about eval
bin/fs_to_db.pl
bin/gearman_decode_worker.pl
--- a/bin/fs_to_db.pl	Mon Aug 18 23:01:26 2014 +0200
+++ b/bin/fs_to_db.pl	Tue Aug 19 23:51:31 2014 +0200
@@ -14,24 +14,37 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 use Mojo::Base -strict;
+use lib 'lib';
 
-use lib 'lib';
-use CrashTest::Storage::Sql;
 use Mojo::JSON;
 use Mojo::Util qw(decode slurp);
+use Mojo::Loader;
 use File::Basename;
+use Mojolicious;
+use Mojo::Home;
+
+if(scalar @ARGV == 0) {
+    say "Usage: $0 <processed json files>";
+    exit 1;
+}
 
 sub load_config {
-    my ($file) = @_;
-    my $code = decode('UTF-8', slurp $file);
-    return eval($code);
+    my $app = Mojolicious->new;
+    $app->home(Mojo::Home->new("$FindBin::Bin/../"));
+    $app->moniker("CrashTest");
+    return $app->plugin('Config');
 }
 
-my $config = load_config("CrashTest.conf");
+my $config = load_config();
+
+my $loader = Mojo::Loader->new;
 
-eval "require $config->{Storage}->{Type}";
-my $storage = $config->{Storage}->{Type}->new($config->{Storage});
+my $storage_class = $config->{Storage}->{Type};
+if (my $e = $loader->load($storage_class)) {
+    die ref $e ? "Exception: $e" : 'Not found!';
+}
 
+my $storage = $storage_class->new(config => $config->{Storage});
 
 foreach my $arg (@ARGV) {
     my $json = Mojo::JSON->new();
--- a/bin/gearman_decode_worker.pl	Mon Aug 18 23:01:26 2014 +0200
+++ b/bin/gearman_decode_worker.pl	Tue Aug 19 23:51:31 2014 +0200
@@ -13,20 +13,25 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-use Gearman::Worker;
+use Mojo::Base -strict;
+use lib 'lib';
+
 use Mojo::JSON;
 use Mojo::Util qw(decode slurp);
 use Mojo::Loader;
 use File::Temp;
-use lib 'lib';
+use Gearman::Worker;
+use Mojolicious;
+use Mojo::Home;
 
 sub load_config {
-    my ($file) = @_;
-    my $code = decode('UTF-8', slurp $file);
-    return eval($code);
+    my $app = Mojolicious->new;
+    $app->home(Mojo::Home->new("$FindBin::Bin/../"));
+    $app->moniker("CrashTest");
+    return $app->plugin('Config');
 }
 
-my $config = load_config($ARGV[0]);
+my $config = load_config();
 
 my $loader = Mojo::Loader->new;
 
@@ -39,7 +44,6 @@
 
 my $worker = Gearman::Worker->new(job_servers => $config->{DecodeQueue}->{GearmanServers});
 
-
 $worker->register_function("dump_decode", 60, sub {
     my $args = $_[0]->arg;