Non-image file variants

ActiveStorage seems to have the idea of multiple file transformers, but the choice of transformer is hard coded to the included ImageProcessingTransformer, preventing the use of a custom transformer without monkeypatching (if I’m reading the code right). It would be nice to see that opened up. For example, I would like to do audio file conversion with Active Storage to ensure that uploaded files can be played back in any browser.

There is an old PR for this, as well as a couple of threads here (all from @sdubois), but it does not seem to have attracted the attention of the core team despite a fair amount of engagement from other users.

I (and others) would appreciate it if someone from core could comment on this feature.


Hi Brian, thanks for this. You could also submit the question on the Discord Ruby forum?

NB: The original PR was closed before the automatic closing of stale PRs was disabled in 2022. So feel free to reopen a PR.

@sdubois Thanks for your PR! I was excited to find it, and sad that it didn’t receive the necessary attention.

Regarding Discord, that software always just makes me angry, so I’ll leave that particular discussion spot to others.

I wouldn’t mind opening a PR, but I wouldn’t do it without at least some feedback on the previous one. If that one wasn’t acceptable for some reason, I would be wasting my time if I didn’t know how the approach needs to change. And if the approach is fine, then that one should just be touched up and merged anyway.

I don’t mind doing work on this feature, but unfortunately it can’t be useful work without a bit of insight from the team regarding your prior submission.

That’s exactly what the Ruby on Rails Discord is for. The Core team asks people who are willing to contribute to start a conversation there to get feedback on the approach/idea before investing time. I believe that’s why @sdubois directed you there in the first place, not just to have a random conversation.

Fair enough. In the past I’ve seen guidance to start a discussion here for that purpose, but maybe that’s outdated now that the Discord is available.

This suggestion is sound, and I would use this feature if implemented in Rails.