CarrierWaveのUploaderクラス単位でS3画像の有効期限を変更する
特定の Uploader クラス単位(レコード単位)で S3 画像の有効期限を儲けたい時の設定方法。
config/initializers/carrierwave.rb
CarrierWave.configure do |config| config.storage = :fog config.fog_credentials = { :provider => "AWS", :aws_access_key_id => "YOUR_ACCESS_KEY", :aws_secret_access_key => "YOUR_SECRET_KEY", :region => "ap-northeast-1", } config.fog_directory = "YOUR_BUCKET_NAME" config.fog_public = true # デフォルトは有効期限を設定しない end
app/uploaders/foo_image_uploader.rb
class FooImageUploader < CarrierWave::Uploader::Base def initialize(*) super self.fog_public = false expiration = model.end_at ? model.end_at - Time.now : "デフォルトの有効秒数" self.fog_authenticated_url_expiration = expiration end process :resize_to_fit => [400, 300] # some code... end
利用した Gem のバージョン
- fog (1.12.1)
- carrierwave (0.8.0)