0

sidekiqのバックグラウンド プロセスで、carrierwave_backgrounderを使用して S3 に画像をアップロードしています。

これが私のbackground_uploader.rbクラスです...

class BackgroundUploader < CarrierWave::Uploader::Base
  include ::CarrierWave::Backgrounder::Delay
  include CarrierWave::RMagick
  include CarrierWave::MimeTypes
  process :set_content_type

  # Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
  include Sprockets::Helpers::RailsHelper
  include Sprockets::Helpers::IsolatedHelper

  storage :fog

  def store_dir
    "uploads/backgrounds/#{model.id}"
  end

  def default_url
    "/assets/default.jpg"
  end

  process :resize_to_fit => [1024, 1024]
  process :convert => 'jpg'
  process :fix_exif_rotation

  def extension_white_list
    %w(jpg jpeg png)
  end

  def filename
    @name ||= Digest::MD5.hexdigest(File.dirname(current_path.to_s))
    "#{@name}.#{file.extension}" if original_filename
  end

  # Rotates the image based on the EXIF Orientation & applies gaussian blur
  def fix_exif_rotation
    manipulate! do |img|
      img.auto_orient!
      img = yield(img) if block_given?
      img = img.gaussian_blur(0.0, 20.0)
      img
    end
  end

end

Carrierwave_backgrounder.rb :

CarrierWave::Backgrounder.configure do |c|
  c.backend :sidekiq, queue: :carrierwave
end

background.rbには以下が含まれます:

mount_uploader :image, BackgroundUploader
process_in_background :image

次に、実行sidekiq -q carrierwaveしてバックグラウンド ワーカーを起動します。すべてがうまくいっています!ファイルをアップロードすると、キューがそれを受け入れて作業を開始するのがわかります...

すぐに AWS S3 コンソールを開くと、そこに元のファイルが表示されます。サイズ変更なし、ぼやけなし。ジョブが完了したら... S3 を更新すると、サイズ変更/ぼかしバージョンが表示されます。両方の画像がそこにありますが、ぼやけた画像だけがそこにあるようにしたいです。私の見解では、私は使用しています...

 <%= image_tag(@background.image.to_s) %>

元のファイルを表示します。ファイルを削除するチェックボックスをオンにすると、必要に応じて削除されます (S3 からオリジナルが削除されます) が、ぼやけたバージョンはそこに残ります。

S3にアップロードされるもの...

  • original.jpg (すぐに...これはアップロードしたくありません)
  • modified.jpg (ジョブ完了後)

簡単に言うと、元のファイルを S3 にアップロードしたくありません。

4

1 に答える 1

1

あなたの問題はfilename、元のファイルを見つける(および削除する)ためにcarrierwaveが依存する可能性がある方法だと思います。ファイル名が最初に保存されたときと処理されたときで変わらない場合、問題は解決しますか?

于 2013-09-21T14:28:36.820 に答える