(FM-8643) Ensure library requires fail usefully #267
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 commit places the requires statement for the ruby-pwsh ruby code (found in the dependency module, puppetlabs-pwshlib) in a begin-rescue block and adds a loud error message that points at the solution.
This will cause the loading of the providers to still fail during autoloading, but to do so usefully.
We chose not to use the feature/confine pattern because it is not supported by the resource_api, the primary interface through which we expect community members to write types and providers in the future.
We chose not to use a utility loader method, which would have prevented breaking during autoloading, because of the friction and additional complexity cost incurred for every module needing to adopt this pattern.
While this rescued-requires pattern will still cause an error during autoloading, this should only be possible in cases where the module is being installed from github and the dependency chain is not installed. In those cases, we are choosing to fail quickly and clearly.