首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Delayed_Paperclip + Sidekiq +Mongoid-剪纸

Delayed_Paperclip + Sidekiq +Mongoid-剪纸
EN

Stack Overflow用户
提问于 2015-09-02 14:53:59
回答 1查看 461关注 0票数 1

我正在使用Rails 4.1引擎来处理用户上传的照片和视频。我正在使用蒙哥德-剪纸剪辑处理上传和纸剪辑-av-转码器来编码视频的几种格式。所有文件都存储在S3中。所有这些都很好,但正如您所预期的那样,编码视频可能需要相当长的时间,所以下一步是在后台实现这一点。我搜索了一下,发现回形针似乎能满足我的需要。此后,塞迪基克似乎是处理后台处理的最佳选择。

现在的问题是,我不能让所有这些一起工作。运行我的单元测试,我得到了NoMethodError: undefined method 'process_in_background',所以问题似乎存在于Delayed_Paperclip上,尽管它没有特殊的设置。

这就是引发问题的模型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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中添加了以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require 'sidekiq/testing'
Sidekiq::Testing.inline!

请注意,我没有忘记运行bundle install,Redis已经启动并正在运行。我用的是蒙哥德,不是活动记录。

我做错什么了?有人成功地使用了这个设置吗?还有别的宝石我应该试试吗?

相关信息:

  • Delayed_paperclip 2.9.1
  • Mongoid 4.0.2
  • 蒙古-纸夹0.0.9
  • 回形针4.2.1
  • 回形针-av-转码器0.6.4
  • Rails 4.1.9
  • Sidekiq 3.5.0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-14 09:11:42

我一直在深入研究delayed_paperclip的代码,它肯定与ActiveRecord有关联,因此与Mongoid不兼容。我尝试了一下队列,但gem已经4年没有更新了,据我所知,它似乎无法与rails/mongoid/回形针的当前版本一起工作。

因此,我决定解决我的问题的最好方法是重写与delayed_paperclip集成的ActiveRecord代码,并让它与Mongoid一起工作。

这就是我最后所做的,而且到目前为止似乎工作得很好:

lib/myengine.rb

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require "mongoid_paperclip"
require "paperclip/av/transcoder"
require "delayed_paperclip"
require "myengine/engine"

module Myengine
end

DelayedPaperclip::Railtie.class_eval do

  initializer 'delayed_paperclip.insert_into_mongoid' do |app|
    ActiveSupport.on_load :mongoid do
      DelayedPaperclip::Railtie.insert
    end

    if app.config.respond_to?(:delayed_paperclip_defaults)
      DelayedPaperclip.options.merge!(app.config.delayed_paperclip_defaults)
    end
  end

  # Attachment and URL Generator extends Paperclip
  def self.insert
    Paperclip::Attachment.send(:include, DelayedPaperclip::Attachment)
    Paperclip::UrlGenerator.send(:include, DelayedPaperclip::UrlGenerator)
  end
end

DelayedPaperclip::InstanceMethods.class_eval do

  def enqueue_post_processing_for name
    DelayedPaperclip.enqueue(self.class.name, read_attribute(:id).to_s, name.to_sym)
  end
end

然后,只需将delayed_paperclip胶水包含到模型中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module Myengine
  class Video
    include Mongoid::Document
    include Mongoid::Paperclip
    include DelayedPaperclip::Glue      # <---- Include this

    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

希望这能省去其他人的麻烦。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32364454

复制
相关文章
将JSON数组转化为List集合[通俗易懂]
假如我们向redis中存放了一个JSON数组,从中获取的时候需要将JSON数组转化为List集合,然后将List对象返回给前端。
全栈程序员站长
2022/09/07
5.7K1
将JSON字符串反序列化为指定的.NET对象类型
  关于将JSON字符串反序列化为指定的.NET对象类型数据常见的场景主要是关于网络请求接口,获取到请求成功的响应数据。本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert.DeserializeObject<T>(string value)方法将对应的JSON字符串转化为指定的.NET对象类型数据。
追逐时光者
2020/06/19
3.1K0
python json 编码(dump/dumps:字典转化为json)、解码(load/loads:json转化为字典)
参考链接: python json 1-1:使用json.dump/dumps将JSON写入文件/字符串
用户7886150
2021/01/19
1.9K0
Python: Json串反序列化为自定义类对象
参考链接: Python-Json 5 : python自定义class进行Json格式化
用户7886150
2021/01/17
2.1K0
android将字符串转化为json,将string转换为JsonArray「建议收藏」
只是在这里混合另一种方法,我想build议看看Gson 。 Gson是一个使Java对象序列化和反序列化的库。 例如,用你的string,你可以这样做:
全栈程序员站长
2022/08/31
3.8K0
【Flutter】JSON 模型转换 ( JSON 序列化工具 | JSON 手动序列化 | 根据 JSON 编写 Dart 模型类 | 在线自动根据 JSON 转换 Dart 类 )
JSON 格式比较简单的话 , 使用自带的 dart:convert 包 , 手动进行 JSON 的序列化与反序列化的操作即可 ;
韩曙亮
2023/03/29
2.8K0
【Flutter】JSON 模型转换 ( JSON 序列化工具 | JSON 手动序列化 | 根据 JSON 编写 Dart 模型类 | 在线自动根据 JSON 转换 Dart 类 )
es6将txt数据序列化成json
2、str=(txt里的数据),let arrStr = str.split('\n');
杨肆月
2019/08/15
6490
R语言时间序列TAR阈值模型分析
例如,在药物毒理学应用中,可能低于阈值量的所有剂量都是安全的,而随着剂量增加到阈值量以上,毒性增加。或者,在动物种群丰富度研究中,人口可能会缓慢增加至阈值大小,但一旦人口超过一定规模后可能会迅速减少(由于食物有限)。
拓端
2020/08/21
9930
R语言时间序列TAR阈值模型分析
一种自动的将自定义类序列化为JSON的方法
最近因为项目需求,需要将一些自定义的类序列化为JSON,网上有很多好用的第三方序列化工具,但都只能自动序列化一些基本类型,如NSNumber,NSString与NSDictionary这种,没有一种第三方工具提供直接将自定义类序列化的方法(至少据我所知:),而对于这种序列化自定义的类的需求,网上能查到的方法只有将自定义的类手动的转存为一个NSDictionary,然后再使用第三方工具来序列化。例如对于一个类Foo,有如下定义: @interface Foo : NSObject {   NSStri
阿新
2018/04/12
1.1K0
R语言多元Copula GARCH 模型时间序列预测
和宏观经济数据不同,金融市场上多为高频数据,比如股票收益率序列。直观的来说 ,后者是比前者“波动”更多且随机波动的序列,在一元或多元的情况下,构建Copula函数模型和GARCH模型是最好的选择。
拓端
2022/06/08
7540
R语言多元Copula GARCH 模型时间序列预测
R 机器学习预测时间序列模型
随着疫情的变化,急性传染病数据经常会随时间变化,我们通过对每天传染病的记录,就形成了时间序列数据,周期可以是天,周,月,年。目前我们经常会用到ARIMA来预测疾病在未来的变化趋势。
Jamesjin63
2022/10/25
9590
R 机器学习预测时间序列模型
将流转化为数据产品
每个大型企业组织都在尝试加速其数字化转型战略,以更加个性化、相关和动态的方式与客户互动。在创建和收集数据时对数据执行分析(也称为实时数据流)并生成即时洞察以加快决策制定的能力为组织提供了竞争优势。
大数据杂货铺
2022/12/02
1K0
将流转化为数据产品
R语言时间序列TAR阈值自回归模型
为了方便起见,这些模型通常简称为TAR模型。这些模型捕获了线性时间序列模型无法捕获的行为,例如周期,幅度相关的频率和跳跃现象。Tong和Lim(1980)使用阈值模型表明,该模型能够发现黑子数据出现的不对称周期性行为。
拓端
2020/12/30
8880
R语言时间序列TAR阈值自回归模型
Apache Kafka-Spring Kafka将泛型反序列化为对象而非LinkedHashMap
spring kafka 使用Jackson序列化, 如果存入kafka中的对象 包含 泛型,那么 默认情况下,这个泛型对象会被Jackson反序列为 LinkedHashMap . 抛出类型转换异常…
小小工匠
2021/08/17
1.3K0
Apache Kafka-Spring Kafka将泛型反序列化为对象而非LinkedHashMap
Python将html转化为pdf
前面我们对博客园的文章进行了爬取,结果比较令人满意,可以一下子下载某个博主的所有文章了。但是,我们获取的只有文章中的文本内容,并且是没有排版的,看起来也比较费劲。。。
周小董
2019/03/25
2.2K0
Python将html转化为pdf
js将秒转化为分钟
formatSeconds(value) { // 秒 let second = parseInt(value) // 分 let minute = 0 // 小时 let hour = 0 // 天 // let day = 0 // 如果秒数大于60,将秒数转换成整数 if (second > 60) { // 获取分钟,除以60取整数,得到整数分钟 minute = parseInt(second / 60) // 获
2022/10/31
3.4K0
将 PDF 转化为 Word 文件
最近存在一个问题:项目结题申请需要上交 Word 版本结题报告。然后我是使用 LaTeX 制作的报告,只能生成 PDF 文件。这该怎么办?通过互联网检索发现了以下几种方法:
庄闪闪
2023/01/09
1.8K0
将 PDF 转化为 Word 文件
左手用R右手Python系列之——json序列化与反序列化
json格式数据作为如今越来越流行的数据交换格式,几乎已经成为web端数据交互的标准,主流的数据科学语言R,Python都中都有非常完善的半结构化数据与json数据进行通讯。本篇文章将会通过简单案例介绍R语言与Python中与json数据进行序列化与反序列化的常用函数。 json的数据以键值对形式存在,在R语言中,符合此标准的就是基础数据对象中的list(严格来说,R语言中所有数据对象都可以表示为list,但是可以保存递归结构只有list一种)。 在R语言中,涉及到json数据处理的,主要是list转换为
数据小磨坊
2018/04/12
1.7K0
iOS SwiftyJSON 对应的JSON 转化为 对象
SwiftyJSON确实很好用 不会因为取了某个空对象的值而导致程序的崩溃 但是 一直这样data["a"]["b"]["c"].stringValue的形式也不太好 那怎样把JSON转换成对象呢
码客说
2019/10/22
1.5K0
点击加载更多

相似问题

SSH和Egit与Eclipse

11

auth与Egit (ssh配置)失败

12

Eclipse和EGit:无法导出SSH

211

Egit ssh问题

22

无法使Nusoap服务器与cakephp一起工作

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文