2017-05-02 4 views
0

현재 AWS s3 계정에 파일을 업로드하려면 Carrierwave 보석을 사용하고 있습니다. 하지만 큰 파일을 업로드 할 예정이므로 서버 시간이 초과되어 사용자가 기다릴 필요가 없습니다. 누구든지 이것을 배경 직업으로 옮기고 그 수행 방법을 제안 할 수 있습니까? 나는 sidekiq을 보았지만 어디서부터 시작해야 할지를 모른 채 잃어 버렸습니다. 그것을 구현하려고 시도 doft't doft't는 성공을 제공하더라도 업로드 것 같다 Rails.레일 웨이브 캐리어 웨이브를 사용하여 백그라운드에서 파일을 업로드하는 방법은 무엇입니까?

+0

와 함께 귀하의 모델을 사용할 수 있습니까? 사이드킥? – sa77

+0

예,'sidekiq'와'carrierwave_backgrounder'. – Corey

답변

1

가장 좋은 방법은 레일 서버를 완전히 우회하여 Carrierwave Direct을 사용하는 것입니다. 그런 다음 백그라운드 작업 (내가 Sidekiq을 권장하지만, 당신이 원하는대로 사용할 수 있습니다.)

0

gem carrierwave_backgrounder를 추가 백그라운드에서 당신이 당신의 파일 업로드를 큐에 도움이되는 보석 carrierwave_backgrounder 거기로 실제 처리를 할 수 있습니다 Gemfile 및 번들로

배경 처리기를 구성하기 위해 이니셜 라이저 파일 config/initializers/carrierwave_backgrounder.rb을 추가하십시오. 이런 식으로 뭔가 당신이 사용하는 경우 sidekiq

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

그런 다음, 당신은 배경 작업에 사용하고있는 사용자의 carrierwave 업 로더

class User < ActiveRecord::Base 
    mount_uploader :avatar, AvatarUploader 
    process_in_background :avatar 
end 
+0

나는 이것을 시도했지만,'sidekiq'는 작업을 처리하지 않는다. 대신 정상적으로 업로드됩니다 ... 나는'redis'와'sidekiq'을 실행 중입니다. @ sa77 – Corey

관련 문제