[Feature][ActiveStorage] vs Paperclip

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[Feature][ActiveStorage] vs Paperclip

Diego

Hello everybody,


I'm in the process of porting a big SaaS platform from Rails 4.2 to Rails 5.2. Everything has been quite smooth until we discovered that the paperclip gem is no longer maintained; the author recommends moving to ActiveStorage. Unfortunately we found some ActiveStorage features to be a step back compared to Paperclip for our specific use case:

1) Attachments are not supposed to be accessed directly, but through a rails controller, which implements a redirect. The redirect URL is temporary.


The benefits of this approach are clear and very important in some contexts, but there are some drawbacks as well, especially for public facing sites:

- I think this behaviour could be marked as a problem by SEO analyzers, which usually require to minimize redirects

- it puts extra workload on clients, which need an extra HTTP request for each attachment

- the extra request is not made to a CDN, but to the central server, further increasing latency

- extra workload is put on the Rails stack increasing hosting costs


In some blog post I found the suggestion to use the service_url() method directly. This would have 2 drawbacks:

  • the URL is temporary, thus it cannot be cached

  • the URL is not SEO friendly


3) In the case of S3 there is no way to specify a folder where the attachment will be stored, the S3 bucket is supposed to be completely taken over by ActiveStorage. I think this is a good strategy in most cases, but if you are implementing a SaaS service using the Apartment gem like us, it really is a big issue. Basically in our system each client has a separate copy of all application tables, and with paperclip we easily managed to share the same bucket using different folders.


Now we would be supposed to create a different bucket for each client, which further require us to create a cloudfront instance for each of them, increasing management efforts and costs.


Please let me know if I misunderstood something or if you have any plan to address these issues.


Thank you guys, keep up the good work!


Diego


--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.