I'm experiencing the exact same issue. After reading your post, I've
confirmed that my code also works if inheriting ActionController::Base
and not ApplicationController. I also have subfolders within the
controllers folder, and they all load fine, even when inheriting
ApplicationController. Only the controllers in the controllers folder
produce the superclass mismatch error on subsequent calls.
After a full day of debugging this, I am no closer to finding the
issue. I have however, found a workaround. For some reason calling
Object.const_get('MyController') before load('MyController')
eliminates the error.
It's a horrible workaround, but I must move on.
If anyone finds the real solution, I'd love to know what it is so I
can get rid of this hack.