Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi, my company's using an issue-tracking system called "RT" (http://bestpractical.com/rt/) , which is written in Perl using HTML:Mason. I'm trying to get familiar with how the source code is laid out, and it's been a tough slog, cause they dont have any developer documentation as far as explaining how the source code is laid out. I was hoping some revered Monks might be familiar with it and give me some pointers. Now, dont laugh, but I've been trying to find out which source code file is responsible for inserting the data into the associated mysql database, but, for the life of me, i cant seem to figure this out.... help ! : )

Replies are listed 'Best First'.
Re: deciphering RT source code layout
by ghenry (Vicar) on Oct 07, 2005 at 17:24 UTC
      thanks, i have ordered the book today :) , but i was hoping for some pointers in the meantime : )

        I've updated the node to save you some work.

        Walking the road to enlightenment... I found a penguin and a camel on the way.....
        Fancy a yourname@perl.me.uk? Just ask!!!
Re: deciphering RT source code layout
by eXile (Priest) on Oct 08, 2005 at 13:41 UTC
    RT uses DBIx::SearchBuilder for it's SQL, you can look into $RT/lib/RT/SearchBuilder.pm for how exactly (where $RT is your RT installation dir).

    One thing that took me a while to figure out is that methods for all RT objects (Queues,Tickets, ..) are a little scattered across files. I haven't found a good description for it's API yet, so I'm using the source to find what methods can be called on certain objects. For instance for Tickets, there is $RT/lib/RT/Ticket.pm $RT/lib/RT/Ticket_Overlay.pm , $RT/lib/RT/Tickets.pm $RT/lib/RT/Tickets_Overlay.pm , $RT/lib/RT/Tickets_Overlay_SQL.pm , and inheritance of course.

    I created myself a quick-and-dirty overview of methods like this (while in the $RT/lib dir):

      find . -name "*.pm" | xargs egrep '^sub'
    
      Have a look RT wiki:

      http://wiki.bestpractical.com/index.cgi?Documentation

      Maybe it helps you.

      ---
      Michael Stepanov aka nite_man

      It's only my opinion and it doesn't have pretensions of absoluteness!