This cleans up how gateways are configured and set up and clearly separates loading adapter files via require vs actually loading gateway objects.
The practical outcome is that gateways are now initialized with the actual config that was used to set them up. This makes it possible to easily access configuration from within a gateway and it also simplifies how gateway plugins can access their configurations. This will make it much simpler to implement default configurations, like default struct namespace etc.
The configuration.config part is yuck so I'm inclined to rename it somehow later on. This and previous refactors also reminded me that plugins and notifications are still global which I completely forgot (that's why we have flaky specs now). I'll finally address this in another PR. This is super important because we need to have configs and plugins on a per-container basis, rather than global. One example of this is auto_restrictions which are now enabled globally, so if you connect to two databases, both setups will have the plugin enabled.
This cleans up how gateways are configured and set up and clearly separates loading adapter files via
require
vs actually loading gateway objects.The practical outcome is that gateways are now initialized with the actual config that was used to set them up. This makes it possible to easily access configuration from within a gateway and it also simplifies how gateway plugins can access their configurations. This will make it much simpler to implement default configurations, like default struct namespace etc.
The
configuration.config
part is yuck so I'm inclined to rename it somehow later on. This and previous refactors also reminded me that plugins and notifications are still global which I completely forgot (that's why we have flaky specs now). I'll finally address this in another PR. This is super important because we need to have configs and plugins on a per-container basis, rather than global. One example of this isauto_restrictions
which are now enabled globally, so if you connect to two databases, both setups will have the plugin enabled.