Defect #36801

Rails Autoload Paths contain plugin libs twice

Added by Stephan Wenzel 7 months ago. Updated 7 months ago.

Status:NewStart date:
Priority:NormalDue date:
Assignee:-% Done:


Category:Plugin API
Target version:-
Resolution: Affected version:4.2.4


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


and 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

Then in 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.


#1 Updated by Stephan Wenzel 7 months ago

A fix could be adding


as the last line in @Redmine::Plugin.load

#2 Updated by Marius BALTEANU 7 months ago

Can you test on current trunk where we switched the autoloading from classic to zeitwerk (#29914)?

Also available in: Atom PDF