A nice enhancement to Apache::Reload would be the ability to explicitly
"register" and reload required library files.
For example, if a sub in 'lib/common_subs.pl' changed, it would be nice if
all code
that did this:
require 'lib/common_subs.pl';
got the fresh code in lib/common_subs.pl.
The Apache::Reload->register_module method expects the "thing" your
registering
to be in a "package" format (eg Foo::Bar). It therefore calls
package_to_module, which converts
:: to /, and appends a .pm to the "thing", before adding it to
%Apache::Reload::INCS.
Therefore, this
Apache::Reload->register_module('lib/common_subs.pl');
doesn't work as one might expect.
I added this functionality to my local copy of Apache::Reload ver 0.07.
Appended to this mail is a diff of the change.
note: if ReloadAll is on, I believe that required libs do indeed get
refreshed.
I'm not setting ReloadAll and am explicidly registering modules (and libs).
Any comments to this change?
Should/could this be incorporated into Apache::Reload?
Thank you,
Mike
University at Buffalo
http://search.cpan.org/src/MSERGEANT/Apache-Reload-0.07/Reload.pm
>diff -c Reload.pm Reload.pm.new
*** Reload.pm Thu Jul 1 16:07:15 2004
--- Reload.pm.new Thu Jul 1 16:07:45 2004
***************
*** 28,33 ****
--- 28,40 ----
sub register_module {
my ($class, $package, $file) = @_;
+
+ if ($INC{$package}) {
+ # if it's in %INC, it's already in "module" format,
+ # just add it to %Apache::Reload::INCS and return
+ $INCS{$package} = $INC{$package};
+ return;
+ }
my $module = package_to_module($package);
if ($file) {
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html