[Rt-devel] [patch] RT::Interface::Web _Overlay/_Vendor/_Local not being included
Ivan Kohler
ivan-rt-devel at 420.am
Mon Apr 25 20:05:22 EDT 2011
On Thu, Apr 21, 2011 at 06:18:40AM +0400, Ruslan Zakirov wrote:
> Hello,
>
> This is still doesn't return old behaviour. Which was with side effects.
>
> Old code was loading .../Web_Local.pm, but code was compiled in
> HTML::Mason::Commands space unless explicit package is defined in
> _Local.pm file.
Okay, how about this instead of the previous patch:
--- lib/RT/Base.pm 18 Apr 2011 23:04:59 -0000 1.1.1.11
+++ lib/RT/Base.pm 25 Apr 2011 23:59:49 -0000
@@ -166,11 +166,11 @@
sub _ImportOverlays {
my $class = shift;
- my ($package,undef,undef) = caller();
- $package =~ s|::|/|g;
+ my ($package, $package_filename, undef) = caller();
+ $package_filename =~ s/\.pm$//;
for (qw(Overlay Vendor Local)) {
- my $filename = $package."_".$_.".pm";
- eval { require $filename };
+ my $filename = $package_filename."_".$_.".pm";
+ eval " package $package; require '$filename'; ";
die $@ if ($@ && $@ !~ qr{^Can't locate $filename});
}
}
This uses the calling filename to determine the overlay names, then
compiles the result in the caller's current package.
Let me know if this works for you.
--
Ivan Kohler, President and Head Geek, Freeside Internet Services, Inc.
Open-source billing, ticketing and provisioning - http://www.freeside.biz/
> On Wed, Apr 20, 2011 at 9:44 PM, Ivan Kohler <ivan-rt-devel at 420.am> wrote:
> > RT::Interface::Web_Overlay, Web_Vendor and Web_Local are not being
> > called.
> >
> > This is a regression from RT 3.8.9->3.8.10 and also affects 4.0.0rc8
> >
> > RT::Interface::Web is in package HTML::Mason::Commands when it calls
> > RT::Base->_ImportOverlays, so it looks for the wrong files.
> >
> > I figured reworking _ImportOverlays to use the calling filename instead
> > of calling package is not desirable (but I'd be happy to give that a
> > shot if you prefer), so this patch fixes things:
> >
> >
> > diff -u lib/RT/Interface/Web.pm.DIST lib/RT/Interface/Web.pm
> > --- lib/RT/Interface/Web.pm.DIST 2011-04-20 10:33:53.000000000 -0700
> > +++ lib/RT/Interface/Web.pm 2011-04-20 10:34:04.000000000 -0700
> > @@ -2756,6 +2756,7 @@
> > return $scrubber;
> > }
> >
> > +package RT::Interface::Web;
> > RT::Base->_ImportOverlays();
> >
> > 1;
>
>
>
> --
> Best regards, Ruslan.
More information about the rt-devel
mailing list