ToriがS3に対応した

何もしないファイルアップローダgem Toriに(僕だけが)待望の新機能、S3ストレージ対応を導入させた。

README.mdから引用すると、Railsとかで

gem 'aws-sdk'
gem 'tori', require: ['tori/rails', 'tori/backend/s3']
# Save to S3 bucket.
Tori.config.backend = Tori::Backend::S3.new(bucket: 'tori_bucket')

# Filename decided by model.class.name,id and hidden words.
Tori.config.filename_callback do |model|
  "#{model.class.name}/#{Digest::SHA1.hexdigest "#{ENV["TORI_MAGICKWORD"]}/#{model.id}"}"
end
class Photo < ActiveRecord::Base
  tori :image
end

上のようによしなに書いておくと、後は勝手にtori_bucketというS3 bucketにモデルクラス毎のディレクトリができて、レコード毎に画像を保存できる。

こうしてS3に上げた画像を件のサムネイル生成サーバーでさばいていて、僕は便利に使ってる。

FileSystemS3をつかさどるクラスの切り替える境界線のイメージがイマイチわかなかったけど、method_missingでいい感じにproxyする方法を思いついたので導入してみた

因みに参考にしていたファイルアップローダであるRefileを見てみると、順調に画像変換サーバーとして進化していた

Toriの場合、例えば画像取得にシグネチャーを入れてDoS対策しましょうとなると、サムネイル変換サーバーを直せば良い。

Toriはどこまでもシンプルです。