Jekyll is a widely used Ruby project that provides plugins. I like their approach a lot:
Implement a base class that implements the basic functionality of your plugin (Jekyll has a few different types of classes you can inherit from).
Clearly specify what methods a subclass will have to override to make the plugin work.
Then you can have your user dump all their plugins in a plugins
directory and load all the files as you're doing now. This approach is built on solid OO concepts and it's very clean.
One suggestion: Ruby provides a inherited callback that you can use. This is much better than searching through all classes with asdf < self
.