carrierwaveのリンクの有効期間を個別に設定

全体でかける場合はこうですかね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# config/initializers/carrierwave.rb
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/ # for Japanese
CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:              'AWS',
    aws_access_key_id:     ENV[:access_key],
    aws_secret_access_key: ENV[:secret],
    region:                ENV['s3_region']
  }

  config.fog_public = false
  config.fog_directory = Settings.aws['s3_bucket']
  config.cache_storage = :fog
  config.fog_authenticated_url_expiration = 1.minutes.to_i
end


個々のアップローダークラスでかける場合

1
2
3
4
5
class ImageUploader < CarrierWave::Uploader::Base
  def fog_authenticated_url_expiration
    1.minutes.to_i
  end
end

uploader内ではmodelでモデル側のインスタンスを参照できるのでmodel側の条件で動的に有効期限を変えるとかもできそうですね。

Comments