Skip to content

Reevaluate use of Fog #2647

@sethboyles

Description

@sethboyles

Impetus

As part of our efforts to upgrade to Ruby 3 and to upgrade the fog-aws gem to enable IMDSv2, we discovered a lot of inter-compatibility issues between the various fog gems.

For example, here are a few contributions we had to make or are in the process of making to ensure fog is working for our purposes:

And we will likely have to contribute to fog/fog-google#422 if it does not move forward.

Not to mention the CF-specific branch of fog-azure-rm that we have been maintaining for years.

The particular gems are not being very actively maintained and there is not much effort to maintain inter-compatibility between them by maintainers.

In addition, we primarily (only?) use Fog to interface with S3 compatible blobstores, while the gems are designed to interface with other services like compute, dns, etc. If we find ourself needing to help maintain these gems, we are taking on the burden maintenance for services we do not use.

Alternative solutions

Since we primarily interface with blobstores, could we have a limited custom solution that only implements the actions we need.

Could we utilize individual gems that are actually created by providers:

https://github.com/Azure/azure-storage-ruby
https://github.com/googleapis/google-cloud-ruby/tree/main/google-cloud-storage
https://github.com/aws/aws-sdk-ruby

Could we somehow utilize ActiveStorage? It seems like it's baked into ActiveRecord, which is unfortunate, but maybe we can extract some of the abstractions they use around file uploads and other actions.

Reasons not to do

Could be a lot of work

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions