8

Tôi đã sử dụng đá quý carrier0ave 0.10.0 với RMagic để tải lên hình ảnh trên AWS S3. Tất cả mọi thứ đã được làm việc tốt, ngoại trừ nó đã dành quá nhiều thời gian để tải lên trên AWS S3. Vì vậy, suy nghĩ sử dụng backgroundwave backgrounder để tải lên hình ảnh trong nền. Tôi thiết lập backgroundwave backgrounder (0.4.2) nhưng trong tập tin này, tập tin gốc của tôi luôn được tải lên S3 nhưng các phiên bản của ảnh đó không bao giờ được tải lên S3.CarrierWave Backgrounder không tải lên các phiên bản hình ảnh lên AWS S3

Đây là carrierwave_backgrounder.rb tôi

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

tôi đã xác định hàng đợi của tôi trong sidekiq.rb

Sidekiq.configure_server do |config| 
config.redis = { :url => "redis://#{ENV['REDIS_ENDPOINT']}:6379", :namespace=> "#{ENV['REDIS_NAMESPACE']}" } 
config.options = 
queues: %w{ 
    critical 
    carrierwave 
    } 
}) 
end 

Đây là photo_uploader.rb tôi

class PhotoUploader < CarrierWave::Uploader::Base 
    include ::CarrierWave::Backgrounder::Delay 
    include CarrierWave::RMagick 
    storage :fog 

    def store_dir 
    "uploads/images/" 
    end 

    def filename 
    "#{secure_token}.#{file.extension}" if original_filename.present? 
    end 

    def orient_image 
    manipulate! do |img| 
     img.auto_orient 
     img 
    end 
    end 

    # Create different versions of your uploaded files: 
    version :thumb_small do 
    process :resize_to_fill => [100,100] 
    process :strip 
    end 

    def strip 
    manipulate! do |img| 
     img.strip! 
     img = yield(img) if block_given? 
     img 
    end 
    end 

    def extension_white_list 
    %w(jpg jpeg gif png) 
    end 

    def get_version_dimensions 
    model.width, model.height = `identify -format "%wx%h " #{file.path}`.split(/x/) 
    end 

    protected 
    def secure_token 
     var = :"@#{mounted_as}_secure_token" 
     model.instance_variable_get(var) || model.instance_variable_set(var, SecureRandom.hex(5)) 
    end 
end 

Dưới đây là hồ sơ của tôi .rb file

mount_uploader :image_url, PhotoUploader 
process_in_background :image_url 

Tôi đã bắt đầu công nhân sidekiq sử dụng lệnh này

bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e development 

Khi tôi tải lên image_url chỉ ảnh gốc được tải lên. Đây là nhật ký sidekiq sau khi tải lên tệp gốc. Nhưng tôi không thấy bất kỳ tệp phiên bản nào được tải lên. Tôi cũng đã kiểm tra xô S3 (Không có tập tin phiên bản nào chỉ có tập tin gốc)

2016-01-11T08:52:20.772Z 3983 TID-ownpyrrxk CarrierWave::Workers::ProcessAsset JID-91e3803d50defb2d1419cef1 INFO: start 
2016-01-11T08:52:31.119Z 3983 TID-ownpyrrxk CarrierWave::Workers::ProcessAsset JID-91e3803d50defb2d1419cef1 INFO: done: 10.347 sec 

Có điều gì đó tôi đang thiếu. Xin vui lòng giúp Cảm ơn trước

+0

Âm thanh như một lỗi, bạn đã thử gỡ lỗi đá quý chưa? Nhìn những người lạ như thế này? https://stackoverflow.com/questions/15490972/carrierwave-processed-images-not-uploading-to-aws-s3?rq=1 – bbozo

+0

@rohit kumar Bạn vẫn gặp sự cố này? Tôi đang phải đối mặt với điều này bây giờ và tôi không có ý tưởng về cách giải quyết nó. Đã googling quanh ngày nhưng không có gì tìm thấy. –

Trả lời

0

Sau khi điều tra với vài tài liệu, đây là đề nghị của tôi:

Từ careerwave_backgrounder readme: https://github.com/lardawge/carrierwave_backgrounder#background-options

của nó rõ ràng cho thấy,

# This stores the original file with no processing/versioning. 
# It will upload the original file to s3. 

Từ #113 này, tác giả đã nói

I found a bug related to Rmagick but no issue with versions 

Bạn có thể thử với MiniMagick/ImageMagick thay vì RMagick.

Documentation để tìm kiếm các vấn đề tương tự:

https://github.com/lardawge/carrierwave_backgrounder/issues/113

https://github.com/lardawge/carrierwave_backgrounder/issues/130

Rails CarrierWave versions are not created for some reason

Cảm ơn!

+0

đã cố gắng minimagick cũng nhưng cùng một vấn đề. –

Các vấn đề liên quan