Я работаю над движком Rails 4.1, который обрабатывает загрузку пользователями фотографий и видео. Я использую Mongoid-Paperclip для обработки выгружаемых файлов и программ для конвертирования видео в несколько форматов. Все файлы хранятся на S3. Все это прекрасно работает, но, как вы можете ожидать, кодирование видео может занять довольно много времени, поэтому следующий шаг - сделать это в фоновом режиме. Я сделал несколько поисковых запросов и нашел Delayed_Paperclip, который, кажется, делает то, что мне нужно. После этого казалось, что Sidekiq был лучшим вариантом для обработки фоновой обработки.Delayed_Paperclip + Sidekiq + Mongoid-Paperclip
Теперь проблема в том, что я не могу сделать все это совместной работой. Выполняя мои модульные тесты, я получаю NoMethodError: undefined method 'process_in_background'
, поэтому, похоже, проблема остается на Delayed_Paperclip, хотя для нее нет специальной настройки.
Это модель стрельбы проблемы
module MyEngine
class Video
include Mongoid::Document
include Mongoid::Paperclip
has_mongoid_attached_file :file,
:path => ':hash.:extension',
:hash_secret => "the-secret",
:storage => :s3,
:url => ':s3_domain_url',
:s3_credentials => File.join(Rails.root, 'config', 's3.yml'),
:bucket => "my-bucket-#{Rails.env}",
:styles => {
:mp4 => { :format => 'mp4', :convert_options => { :output => { :vcodec => 'libx264', :acodec => 'copy' } } },
:ogg => { :format => 'ogg', :auto_rotate => true },
:webm => { :format => 'webm', :auto_rotate => true },
:thumb => { :geometry => "250x187#", :format => 'jpg', :time => 10, :auto_rotate => true }
},
:processors => [:transcoder]
validates_attachment :file, :content_type => { :content_type => ["video/x-flv", "video/mp4", "video/ogg", "video/webm", "video/x-ms-wmv", "video/x-msvideo", "video/quicktime", "video/3gpp"] }
process_in_background :file
end
end
Я пытался добавить require "delayed_paperclip"
в файл lib/myengine/myengine.rb
, но это не помогло.
Что касается Sidekiq, я добавил к test_helper.rb
следующее:
require 'sidekiq/testing'
Sidekiq::Testing.inline!
Обратите внимание, что я не забыл запустить bundle install
и Redis это и работает. Я использую Mongoid, а не активную запись.
Что я делаю неправильно? Кто-нибудь успешно использовал эту настройку? Есть ли еще одна комбинация драгоценных камней, которые я должен попробовать?
Доп информация:
- Delayed_paperclip 2.9.1
- Mongoid 4.0.2
- Mongoid-Paperclip 0.0.9
- Paperclip 4.2.1
- Скрепка-ау-транскодер 0,6. 4
- Рельсы 4.1.9
- Sidekiq 3.5.0
Хорошо, что вы вернулись и ответили на свой вопрос так подробно. –