]> 91.132.146.200 Git - insipid.git/commitdiff
Fix for Perl 5.10 reload module bheaviour.
authorLuke Reeves <luke@neuro-tech.net>
Sun, 12 Jul 2009 14:58:50 +0000 (10:58 -0400)
committerLuke Reeves <luke@neuro-tech.net>
Sun, 12 Jul 2009 14:58:50 +0000 (10:58 -0400)
Basically the installation for the database was moved to a standalone module
that can be safely invoked from the main insipid.cgi stub.

insipid.cgi
lib/Insipid/DBInstall.pm [new file with mode: 0755]
lib/Insipid/Database.pm

index d1627f5763ed09db94bf73f52f75d460e46ef42d..87160f8b4e3a76d9a7680a9706c2197038ad057a 100755 (executable)
@@ -23,7 +23,6 @@ use warnings;
 use strict;
 
 # This stub checks for libraries and what not and then calls the main program.
-push(@INC, "lib");
 
 if(!-e "insipid-config.cgi") {
        # TODO: Better error message here.
@@ -33,6 +32,7 @@ if(!-e "insipid-config.cgi") {
 
 
 eval {
+       push(@INC, "lib");
        require Insipid::Main;
        Insipid::Main::main();
 };
@@ -60,8 +60,9 @@ if($@) {
                # tables were not found.
                undef($@);
                eval {
-                       require Insipid::Database;
-                       Insipid::Database::install();
+                       push(@INC, "lib");
+                       require Insipid::DBCreate;
+                       Insipid::DBInstall::install();
                };
 
                if($@) {
diff --git a/lib/Insipid/DBInstall.pm b/lib/Insipid/DBInstall.pm
new file mode 100755 (executable)
index 0000000..1d726dc
--- /dev/null
@@ -0,0 +1,82 @@
+#!/usr/bin/perl\r
+#\r
+# Copyright (C) 2008 Luke Reeves\r
+#\r
+# This program is free software; you can redistribute it and/or modify\r
+# it under the terms of the GNU General Public License as published by\r
+# the Free Software Foundation; either version 2 of the License, or\r
+# (at your option) any later version.\r
+#\r
+# This program is distributed in the hope that it will be useful,\r
+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+# GNU General Public License for more details.\r
+#\r
+# You should have received a copy of the GNU General Public License\r
+# along with this program; if not, write to the Free Software\r
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307\r
+# USA\r
+#\r
+\r
+package Insipid::DBInstall;\r
+\r
+use strict;\r
+use warnings;\r
+\r
+use Insipid::Config;\r
+use Insipid::Schemas;\r
+\r
+use DBI qw/:sql_types/;;\r
+use vars qw($version);\r
+\r
+use Exporter ();\r
+our (@ISA, @EXPORT);\r
+       \r
+@ISA = qw(Exporter);\r
+@EXPORT = qw(install);\r
+\r
+sub install {\r
+       my ($sth, $dbname, $dbuser, $dbpass, $dbtype, $dsn, $dbh, @creates);\r
+\r
+       $dbname = getconfig('dbname');\r
+       $dbuser = getconfig('dbuser');\r
+       $dbpass = getconfig('dbpass');\r
+\r
+       if(defined(getconfig('dbtype'))) {\r
+               $dbtype = getconfig('dbtype');\r
+       } else {\r
+               $dbtype = 'mysql';\r
+       }\r
+\r
+       $dsn = "DBI:$dbtype:dbname=$dbname;host=localhost";\r
+       $dbh = DBI->connect($dsn, $dbuser, $dbpass, { 'RaiseError' => 0}) or die $DBI::errstr;\r
+\r
+       print "Content-Type: text/html\r\n\r\n";\r
+       print "<html><head><title>Insipid Installation</title></head><body>";\r
+\r
+       print "<p>Creating tables...";\r
+\r
+       if($dbtype eq 'mysql') {\r
+               @creates = split(/\;/, $createMySQL);\r
+       } else {\r
+               @creates = split(/\;/, $createPostgres);\r
+       }\r
+\r
+       foreach(@creates) {\r
+               my $sql = $_;\r
+               if(length($sql) > 2) {\r
+                       $sth = $dbh->prepare($sql);\r
+                       $sth->execute() or print "<br />Error executing \"$sql\" - $DBI::errstr<br />";\r
+               }\r
+       }\r
+       print " done!</p>";\r
+\r
+       print "<p>Insipid's database has been installed.  You can reload this " .\r
+               "page to start using Insipid.</p>";\r
+       \r
+       print "</body></html>";\r
+\r
+}\r
+\r
+1;\r
+__END__\r
index d7d12755c52685da0c4a8fb3fb29a115db4bd9fc..bfbd336614d90592219937d445ae1ecd0cfc07fc 100755 (executable)
@@ -78,8 +78,6 @@ sub export_options {
 }\r
 \r
 sub dbupgrade {\r
-       print STDERR "Upgrading Insipid database...\n";\r
-\r
        my $sql = "update $tbl_options set value = ? where (name = ?)";\r
        my $sth = $dbh->prepare($sql);\r
        $sth->execute($version, 'version');\r
@@ -131,45 +129,12 @@ sub get_option {
                while(my $hr = $sth->fetchrow_hashref) {\r
                        $options{$hr->{'name'}} = $hr->{'value'};\r
                }\r
-               $sth->close();\r
        }\r
 \r
        my ($name) = (@_);\r
        return $options{$name};\r
 }\r
 \r
-sub install {\r
-       my ($sth, @creates);\r
-\r
-       print STDERR "Performing database installation.\n";\r
-       \r
-       print "Content-Type: text/html\r\n\r\n";\r
-       print "<html><head><title>Insipid Installation</title></head><body>";\r
-\r
-       print "<p>Creating tables...";\r
-\r
-       if($dbtype eq 'mysql') {\r
-               @creates = split(/\;/, $createMySQL);\r
-       } else {\r
-               @creates = split(/\;/, $createPostgres);\r
-       }\r
-\r
-       foreach(@creates) {\r
-               my $sql = $_;\r
-               if(length($sql) > 2) {\r
-                       $sth = $dbh->prepare($sql);\r
-                       $sth->execute() or print "<br />Error executing \"$sql\" - $DBI::errstr<br />";\r
-               }\r
-       }\r
-       print " done!</p>";\r
-\r
-       print "<p>Insipid's database has been installed.  You can reload this " .\r
-               "page to start using Insipid.</p>";\r
-       \r
-       print "</body></html>";\r
-\r
-}\r
-\r
 # This configures the URLs in the application to support mod_rewrite or\r
 # a webserver sans mod_rewrite.\r
 if(get_option('use_rewrite') eq 'yes') {\r