Allow overriding default implementation of TemporaryDirectory #1846
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 PR arises out of the need to change the default implementation of the
TemporaryDirectory
service. In our story, serving a multi-tenant application and using this package to backup each individual tenant's DB, we needed the ability to customize the temporary directory's location. Because we have a large number of tenants, we elected to create a batch job to backup each tenant's DB. Because of this, we are running into the issue where multiple jobs are trying to use the same temporary directory. As you can imagine, this creates chaos. We now have the ability to set the file path based on the tenant allowing each tenant to use their own temporary directory.Because the package relies on Spatie's temporary directory package, we needed to create an adapter to extend the new
TemporaryDirectory
interface. This adapter just simply creates a new instance ofTemporaryDirectory
and then passes all calls to the default implementation.With this PR, we can now do the following. This allows use to set the location in our own implementation's constructor.
I chose not to include all the methods in the contract from the
spatie/temporary-directory
package as this would create a cross-package dependency that I think would not be the best choice.