Rails 3 で Paperclip Processor を使用する

Paperclip は高機能なファイル添付のための Rails プラグインです。

thoughtbot’s paperclip at master – GitHub

単純にアップロードが行えるだけではなく、アップロードされたファイルを処理する Processor という仕組みがあります。
Railscasts でも紹介されています。
Railscasts – Cropping Images

この Processor を作成するには Paperclip::Processor というのを継承して、 $RAILS_ROOT/lib/paperclip_processors/hoge.rb みたいな場所に置きます。

この Processor の仕組みが今回必要だったので、 Rails 3 で動かしてみたところ、動いている気配がない。
そこで Processor not loading at first try with Rails3 – Paperclip Plugin というのを参考にして、以下のコードを書いてみたところ無事に読み込まれました。

Hoge::Application.configure do
  config.after_initialize do
    Dir.glob(File.join(File.expand_path(Rails.root), "lib", "paperclip_processors", "*.rb")).each do |processor|
      require processor
    end
  end
end

これを config/initializers/paperclip.rb として置いておきました。

より詳しい Processor の作成方法については以下の blog に非常に詳しく書かれています。
動画をアップロードされたら ffmpeg でサムネイルを作成する方法について書かれていて、非常に参考になります。
Video thumbnails with FFmpeg and Paperclip – Ruby on Rails, JRuby, AWS, EC2, Exalead

注意点としては、 has_attached_file にちゃんと :styles プロパティを設定しておくこと。
これをしないと :processors => [ :hoge ] と書いても、その Processor は呼ばれません。

参考文献