[Rt-devel] Problem redefining hashes in Tickets_Local.pm

Michael Gilbert mdgilb at u.washington.edu
Tue Mar 7 15:34:41 EST 2006


As a resolution, I got the new hash values to be properly read by 
deleting Tickets_Overlay_SQL from %INC before the module was loaded from 
Tickets_Local.  The module had previously not been loading with the new 
hash values due to require's insistence that modules not be previously 
loaded.

So adding "delete $INC{'RT/Tickets_Overlay_SQL.pm'};"
before "require RT::Tickets_Overlay_SQL;"
in Tickets_Local solved the problem.  I wasn't entirely clear on 
Ruslan's suggestion below, so thought I'd post this in case anyone else 
runs into a similar problem.
Thanks,
Michael

Michael Gilbert wrote:
> I still seem to be having some problems with this..  How would I go 
> about redefining the FIELDS and dispatch subroutines with the extra 
> values, exactly?  I still can't seem to add the values to the hashes 
> without modifying Tickets_Overlay.
> Thanks,
> Michael
>
> Ruslan Zakirov wrote:
>> Reproduced problem, this hashes are defined with 'my' scope so you
>> can't redefine them from other file even if package is the same, but
>> you can redefine or tie hook on functions FIELDS, dispatch and
>> can_bundle.
>>
>> On 3/4/06, Michael Gilbert <mdgilb at u.washington.edu> wrote:
>>  
>>> Yes, I am setting the package name in Tickets_Local.  I should mention
>>> that all previous changes have worked fine in Tickets_Local and all the
>>> other _Locals, but all those changes were to existing  or new
>>> subroutines, not hash definitions.
>>>
>>> For example, the &_TagLimit routine mentioned below is read without any
>>> problems, and it only exists in the _Local, not the _Overlay.  It's 
>>> only
>>> the hash definitions that I can't seem to add to.
>>>
>>> Thanks,
>>> Michael
>>>
>>> Todd Chapman wrote:
>>>    
>>>> On Fri, Mar 03, 2006 at 01:12:14PM -0800, Michael Gilbert wrote:
>>>>
>>>>      
>>>>> Hello,
>>>>> I'm having what is likely a simple problem, but I haven't been 
>>>>> able to
>>>>> come up with the answer on my own yet and was hoping for some advice.
>>>>>
>>>>> What I'm trying to do is add keys to the %FIELDS and %dispatch 
>>>>> hashes in
>>>>> Tickets_Local in order to handle searches on a custom Tags table,
>>>>> however the new keys are never properly added to the hashes.  I've
>>>>> attempted including them directly in the hash declarations:
>>>>> %Fields =
>>>>> ...
>>>>>    Tag              => [ 'TAG', ],
>>>>>    Tags             => [ 'TAG', ],
>>>>> %dispatch =
>>>>> ...
>>>>>    TAG             => \&_TagLimit,
>>>>>
>>>>> As well as adding them in after the fact:
>>>>> $FIELDS{'Tag'}  = ['TAG'];
>>>>> $FIELDS{'Tags'} = ['TAG'];
>>>>> $dispatch{'TAG'} = \&_TagLimit;
>>>>>
>>>>> Neither of which seems to have any affect on the hashes at runtime.
>>>>> Both of the above work properly, however, when I add them directly 
>>>>> into
>>>>> Tickets_Overly.pm
>>>>>
>>>>> My question is if anyone knows of a way to update these hashes 
>>>>> without
>>>>> modifying Tickets_Overlay (keep the update in Tickets_Local).  I 
>>>>> would
>>>>> guess this is a problem of scope, but I haven't yet been able to 
>>>>> find a
>>>>> way around it (including completely commenting out the FIELDS and
>>>>> dispatch declarations in Tickets_Overlay).
>>>>>
>>>>>
>>>>>         
>>>> In your _Local file are you setting the package name?
>>>>
>>>> package RT::Tickets;
>>>>
>>>>
>>>>
>>>> -Todd
>>>>
>>>>       
>>> _______________________________________________
>>> List info: 
>>> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-devel
>>>
>>> Best Practical is hiring! Come hack Perl for us: 
>>> http://bestpractical.com/about/jobs.html
>>>
>>>     
>>
>>
>> -- 
>> Best regards, Ruslan.
>>   
>
> _______________________________________________
> List info: 
> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-devel
>
> Best Practical is hiring! Come hack Perl for us: 
> http://bestpractical.com/about/jobs.html



More information about the Rt-devel mailing list