アプリなどを開発するブログ

React Native / Swift / Ruby on Railsなどの学習メモ。


Paperclipで指定した時だけprocessを省略する

herokuでpaperclipを使ったアプリケーションを運用していると、
S3との通信のもたつきなどで画像のアップロード/クロッピングの処理がタイムアウトしてしまうことがある。
(Heroku の Delayed jobは処理に15秒以上かかるとタイムアウトする)

なので、クロッピングやアップロードは、必要な時だけするようにして
パフォーマンスを上げたい。
自分はwithout_main_processというattr_accessorを作って、
styles[:main] が必要ない時は除外するようにしました。

もっと効率がいい方法がありそうだけど。。
他にやり方あったら教えていただけると幸いです!

models/Photo.rb

has_attached_file :photo_file, 
styles: lambda { |attachment| attachment.instance.choose_styles }

attr_accessor :without_main_process

def choose_styles
    if self.without_main_process.blank?
      puts "choose_styles : main"
      { main:"230x230#" }
    else
      puts "choose_styles : none"
      { }
    end
end