写真やビデオのユーザー アップロードを処理する Rails 4.1 エンジンに取り組んでいます。Mongoid-Paperclip を使用してアップロードを処理し、Paperclip-av-transcoder を使用してビデオをいくつかの形式にエンコードしています。すべてのファイルは S3 に保存されます。これらはすべて正常に機能しますが、予想どおり、ビデオのエンコードにはかなりの時間がかかる可能性があるため、次のステップはバックグラウンドでエンコードを行うことです。グーグルで調べたところ、 Delayed_Paperclipが必要な機能を果たしているように見えました。その後、Sidekiqがバックグラウンド処理を処理するための最良の選択肢であると思われました。
問題は、これらすべてを一緒に機能させることができないということです。単体テストを実行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
- モンゴイド 4.0.2
- Mongoid-ペーパークリップ 0.0.9
- ペーパークリップ 4.2.1
- Paperclip-av-トランスコーダー 0.6.4
- レール 4.1.9
- サイドキク 3.5.0