Rails4.2 carrierwave_backgrounderについて
carrierwave_backgrounderを使い画像のアップロードを非同期にしました。
開発環境では正しく動くのですが、herokuにデプロイしたらキューが開始されません
AmazonのS3を使用していて、エラー内容をみると/app/public/uploads/tmp/となっているのでおかしいというのはわかるのですが、どこを直せばいいかわかりません
carrierwave_backgrounderを使う前はheroku環境でもアップロードできました。
# app/uploaders
class PictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
version :thumb1 do
process :resize_to_limit => [840,1336]
end
version :thumb2 do
process :resize_to_limit => [420,840]
end
version :thumb3 do
process :resize_to_fill => [200,200]
end
# CarrierWaveでアップロードした写真(画像)が回転して表示されるのを直す
process :fix_rotate
def fix_rotate
manipulate! do |img|
img = img.auto_orient
img = yield(img) if block_given?
img
end
end
# バッググランド処理
include ::CarrierWave::Backgrounder::Delay
# S3 strage
storage :fog
# 画像の上限を700pxにする
process :resize_to_limit => [1366, 1366]
# 保存形式をJPGにする
process :convert => 'jpg'
# 許可する画像の拡張子
def extension_white_list
%w(jpg jpeg gif png)
end
# 変換したファイルのファイル名の規則
def filename
"#{secure_token}.png" if original_filename.present?
end
protected
def secure_token
var = :"@#{mounted_as}_secure_token"
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid)
end
end
# config/initializer/carrierwave.rb
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => 'xxxxxxxxxxxxxxxxxx',
:aws_secret_access_key => 'xxxxxxxxxxxxxxxxxx',
:region => 'ap-northeast-1'
}
config.fog_directory = 'appnamedevelopment' if Rails.env.development?
config.fog_directory = 'appnameproduction' if Rails.env.production?
end
# config/initializer/carrierwave_backgrounder.rb
CarrierWave::Backgrounder.configure do |c|
c.backend :sidekiq, queue: :carrierwave
end
変更後
CarrierWave.configure do |config|
config.cache_dir = "#{Rails.root}/tmp/uploads"
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => 'xxxxxxxxxxxxxxxxxx',
:aws_secret_access_key => 'xxxxxxxxxxxxxxxxxx',
:region => 'ap-northeast-1'
}
config.storage = :fog
config.fog_directory = 'appnamedevelopment' if Rails.env.development?
config.fog_directory = 'appnameproduction' if Rails.env.production?
config.fog_public = true
config.fog_authenticated_url_expiration = 60
end
エラー
Rendering 500 with exception: undefined method `cache_name' for #<CarrierWave::Mounter:0x007fd0bd830d98>