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 rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to