Improve gateway setup #638
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.