CleanMasonCache
Each file in the share/html
directory is a mason component. Mason precompiles these files into Perl code and stores precompiled files in the cache dir. This feature speeds up processing as it doesn't need to recompile components each time. Also we can turn off checks on the original components if recompilation is required. Skipping such tests is done to speed up things more. RT uses both of these features. So when you change anything in the share/html
or local/html
directories, you must clear the mason cache to see changes. To clear the cache, run this command:
shell> rm -rf /opt/rt3/var/mason_data/obj/*
NOTE Your path to RT may differ if you're using a packaged version of RT. Please, enter below paths for your OS distribution.
RedHat / CentOS
Manual:
Locate your RT install directory, in our case /usr/local/rt4
rm -Rf /usr/local/rt4/var/mason_data/obj/*
Scripted:
unset _response _rt=$(find /opt /usr -name mason_data) while [[ ( ${_response} != 'n' ) && ( ${_response} != 'N' ) && ( ${_response} != 'y' ) && ( ${_response} != 'Y' ) ]]; do read -p "Clearing mason cache in ${_rt}, continue? 'y/N': " _response done if [[ ( ${_response} == 'y' ) || ( ${_response} == 'Y' ) ]]; then { echo -n "Clearing mason cache in ${_rt}: " rm -rf ${_rt}/obj/* _status=${?} if [[ ${_status} == 0 ]]; then { echo "[ SUCCESS ]" } else { echo "[ FAIL ]" } fi } else { echo 'Exiting without clearning mason cache' } fi
SUSE/openSUSE
Assuming you have installed RT via the request-tracker
package (as you should have), just run the /usr/sbin/rt-clean-mason-cache
script as root
.
FreeBSD
In FreeBSD, all third-party software is installed in /usr/local/, so the command would be:
rm -rf /usr/local/rt3/var/mason_data/obj/*
except for recent RT4 portbuild, where the RT var directory becomes /var/run/rt40
So the command is
rm -rf /var/run/rt40/mason_data/obj/*
Debian & Ubuntu
If you're using Debian packages then the filesystem location mentioned above is more likely to be /var/cache/request-tracker3.4/mason_data
It may also be useful to know that DevelMode requires a Perl module called Module::Refresh, a package for which is not easily found. So if you're hacking on something and want to see the changes, you can clear the cache and restart Apache in one go like so:
find /var/cache/request-tracker3.4/mason_data/ -type f -print0 | xargs -0 rm -f ; /etc/init.d/apache2 restart
For developers
The DevelMode option allows you to avoid this step, but note that you don't want to use this option in production environment.