Rails Autoload Paths contain plugin libs twice
Due to the way plugins are loaded by Redmine the variable
contains the path to the 'lib' directory of each plugin twice, which should not happen.
When Redmine loads the plugins from
config/initializers/30-redmine.rb it calls
Redmine::Plugin.load (defined in
lib/redmine/plugin.rb) adds the 'lib' directory of each plugin to
$LOAD_PATH #alias $:
When each plugin calls
from init.rb (which they ought to do), then in
Redmine::Plugin.register all Rails paths in the plugin directory are created by calling
implicitly by calling
engine_cfg.paths.add 'lib', eager_load: true
Redmine::Plugin.register the following call causes the second addition of the autoload_paths
ActiveSupport::Dependencies.autoload_paths += engine_cfg.eager_load_paths + engine_cfg.autoload_once_paths + engine_cfg.autoload_paths
In some environments this may cause trouble.
Updated by Stephan Wenzel about 1 year ago
A fix could be adding
as the last line in @Redmine::Plugin.load
Updated by Marius BALTEANU about 1 year ago
Can you test on current trunk where we switched the autoloading from classic to zeitwerk (#29914)?