[Rt-commit] rt branch, 4.2/build-table-attributes, created. rt-4.1.13-28-g8445974
Alex Vandiver
alexmv at bestpractical.com
Mon Jun 24 17:25:26 EDT 2013
The branch, 4.2/build-table-attributes has been created
at 8445974abe94d832ed59ce38e54226565fab26aa (commit)
- Log -----------------------------------------------------------------
commit 93fd136a4c4cfec3264dccdd21bfe104fb69eb7c
Author: Alex Vandiver <alexmv at bestpractical.com>
Date: Mon Jun 24 16:52:50 2013 -0400
Refactor rebuilding table attributes into a method
diff --git a/lib/RT.pm b/lib/RT.pm
index 368770a..7fa9b57 100644
--- a/lib/RT.pm
+++ b/lib/RT.pm
@@ -480,6 +480,30 @@ sub InitClasses {
require RT::Topic;
require RT::Topics;
+ $self->_BuildTableAttributes;
+
+ if ( $args{'Heavy'} ) {
+ # load scrips' modules
+ my $scrips = RT::Scrips->new(RT->SystemUser);
+ while ( my $scrip = $scrips->Next ) {
+ local $@;
+ eval { $scrip->LoadModules } or
+ $RT::Logger->error("Invalid Scrip ".$scrip->Id.". Unable to load the Action or Condition. ".
+ "You should delete or repair this Scrip in the admin UI.\n$@\n");
+ }
+
+ foreach my $class ( grep $_, RT->Config->Get('CustomFieldValuesSources') ) {
+ local $@;
+ eval "require $class; 1" or $RT::Logger->error(
+ "Class '$class' is listed in CustomFieldValuesSources option"
+ ." in the config, but we failed to load it:\n$@\n"
+ );
+ }
+
+ }
+}
+
+sub _BuildTableAttributes {
# on a cold server (just after restart) people could have an object
# in the session, as we deserialize it so we never call constructor
# of the class, so the list of accessible fields is empty and we die
@@ -513,26 +537,6 @@ sub InitClasses {
RT::ObjectTopic
RT::Topic
);
-
- if ( $args{'Heavy'} ) {
- # load scrips' modules
- my $scrips = RT::Scrips->new(RT->SystemUser);
- while ( my $scrip = $scrips->Next ) {
- local $@;
- eval { $scrip->LoadModules } or
- $RT::Logger->error("Invalid Scrip ".$scrip->Id.". Unable to load the Action or Condition. ".
- "You should delete or repair this Scrip in the admin UI.\n$@\n");
- }
-
- foreach my $class ( grep $_, RT->Config->Get('CustomFieldValuesSources') ) {
- local $@;
- eval "require $class; 1" or $RT::Logger->error(
- "Class '$class' is listed in CustomFieldValuesSources option"
- ." in the config, but we failed to load it:\n$@\n"
- );
- }
-
- }
}
=head2 InitSystemObjects
commit 8445974abe94d832ed59ce38e54226565fab26aa
Author: Alex Vandiver <alexmv at bestpractical.com>
Date: Mon Jun 24 16:53:05 2013 -0400
Rebuild record attributes after loading plugins
Plugins may provide _LocalAccessible methods in an attempt to modify
which attriutes are public. However, as InitClasses() is called prior
to InitPlugins(), the _BuildTableAttributes call is too early to be
affected by plugins' changes.
Add an additional _BuildTableAttributes call after plugins are loaded.
In order to preserve the previous behavior, do not remove the previous
callsite. Otherwise, code which called InitClasses directly would not
have a working set of classes, and load-time code in plugins would not
be able to use the core classes' SearchBuilder-constructed methods.
diff --git a/lib/RT.pm b/lib/RT.pm
index 7fa9b57..1138fa1 100644
--- a/lib/RT.pm
+++ b/lib/RT.pm
@@ -195,6 +195,7 @@ sub Init {
InitClasses();
InitLogging();
InitPlugins();
+ _BuildTableAttributes();
RT::I18N->Init;
RT->Config->PostLoadCheck;
RT::Lifecycle->new->FillCache;
@@ -480,7 +481,7 @@ sub InitClasses {
require RT::Topic;
require RT::Topics;
- $self->_BuildTableAttributes;
+ _BuildTableAttributes();
if ( $args{'Heavy'} ) {
# load scrips' modules
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list