Customizing with plugin - config.cache_classes = true breaks override

I have a generic application which I need to cutomize for different
customer scenarios.
All customizations shall reside in a plugin.

E.g. a controller method or a view could be overridden in the plugin.
This works fine as long as I’m in development environment. In
production, i.e. when config.cache_classes = true, overriding won’t
work and I get the original functionality.

Interestingly, I have a plugin with some rails monkey patches which
always works independent from class caching.

There are some other threads where similar effects have been discussed
but apart from suspecting that load sequence might play a role I
couldn’t find anything that solves my problem.

Is there a ‘best practice’ to override controller functionality which
also works with cache_classes=true?