Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 定制处理器的回形针NoHandler错误_Ruby On Rails 4_Paperclip - Fatal编程技术网

Ruby on rails 4 定制处理器的回形针NoHandler错误

Ruby on rails 4 定制处理器的回形针NoHandler错误,ruby-on-rails-4,paperclip,Ruby On Rails 4,Paperclip,我正在尝试将上传的视频转换为多种格式,但出现了一个错误 视频模型: class Video < ActiveRecord::Base has_attached_file :video, { preserve_files: true, styles: { ogg: { :processors =>

我正在尝试将上传的视频转换为多种格式,但出现了一个错误

视频模型:

class Video < ActiveRecord::Base
  has_attached_file :video, {
                              preserve_files: true,
                              styles: {
                                  ogg: { :processors => [:ogg_processor] },
                              },
                              url: '/tmp/paperclip/:rails_env/video/:style/:filename',
                              path: ':rails_root/public:url',
                          }

  # paperclip:
  validates :video, attachment_presence: true
  validates_with AttachmentContentTypeValidator, attributes: :video, content_type: /\Avideo\/.*\Z/
  validates_with AttachmentSizeValidator, attributes: :video, less_than: 150.megabytes
end
处理器:

# lib/paperclip_processors/ogg_processor.rb
module Paperclip
  class OggProcessor < Processor
    def make
      output = Tempfile.new([File.basename(@file.path), '.ogv'])
      parameters = '--max_size 1280x1280 --output :output :input'
      Paperclip.run('ffmpeg2theora', parameters, output: File.expand_path(file.path), input: File.expand_path(output.path))
      output
    end
  end
end
#lib/paperclip_processors/ogg_processor.rb
模块回形针
类OGGPProcessor<处理器
def制造
output=Tempfile.new([File.basename(@File.path),'.ogv']))
参数='--max_size 1280x1280--output:output:input'
运行('ffmpeg2theora',参数,输出:File.expand_path(File.path),输入:File.expand_path(output.path))
输出
结束
结束
结束
错误:

Paperclip::AdapterRegistry::NoHandlerError: No handler found for "public/tmp/videos/SampleVideo_720x480_30mb.mkv"
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/io_adapters/registry.rb:19:in `handler_for'
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/io_adapters/registry.rb:29:in `for'
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/attachment.rb:98:in `assign'
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/has_attached_file.rb:66:in `block in define_setter'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/attribute_assignment.rb:54:in `public_send'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/attribute_assignment.rb:54:in `_assign_attribute'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/attribute_assignment.rb:41:in `block in assign_attributes'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/attribute_assignment.rb:35:in `each'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/attribute_assignment.rb:35:in `assign_attributes'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/core.rb:566:in `init_attributes'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/core.rb:281:in `initialize'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/inheritance.rb:61:in `new'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/inheritance.rb:61:in `new'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/persistence.rb:50:in `create!'
/home/vedant/web/voggle/lib/tasks/dummy.rake:47:in `block (3 levels) in <top (required)>'
/home/vedant/web/voggle/lib/tasks/dummy.rake:46:in `each'
/home/vedant/web/voggle/lib/tasks/dummy.rake:46:in `block (2 levels) in <top (required)>'
/home/vedant/.gem/ruby/2.2.4/gems/airbrake-5.5.0/lib/airbrake/rake/task_ext.rb:19:in `execute'
/home/vedant/.gem/ruby/2.2.4/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
Tasks: TOP => dummy:videos
(See full trace by running task with --trace)
Paperclip::AdapterRegistry::NoHandlerError:找不到“public/tmp/videos/SampleVideo_720x480_30mb.mkv”的处理程序
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/io_adapters/registry.rb:19:in'handler_for'
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/io_adapters/registry.rb:29:in'for'
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/attachment.rb:98:in'assign'
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/has_attached_file.rb:66:“定义中的块”中
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active\u record/attribute\u assignment.rb:54:在“public\u send”中
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active\u record/attribute\u assignment.rb:54:在“分配属性”中
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active\u record/attribute\u assignment.rb:41:在“分配属性中的块”中
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active\u record/attribute\u assignment.rb:35:in'each'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active\u record/attribute\u assignment.rb:35:在'assign\u attributes'中
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active\u record/core.rb:566:in'init\u attributes'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active\u record/core.rb:281:in'initialize'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active\u record/heritation.rb:61:in'new'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active\u record/heritation.rb:61:in'new'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active\u record/persistence.rb:50:in'create!'
/home/vedant/web/voggle/lib/tasks/dummy.rake:47:in'block(3层)in'
/home/vedant/web/voggle/lib/tasks/dummy.rake:46:in'each'
/home/vedant/web/voggle/lib/tasks/dummy.rake:46:in'block(2层)in'
/home/vedant/.gem/ruby/2.2.4/gems/aibrake-5.5.0/lib/aibrake/rake/task_ext.rb:19:在“执行”中
/home/vedant/.gem/ruby/2.2.4/gems/rake-11.3.0/exe/rake:27:in`'
任务:TOP=>dummy:视频
(通过使用--trace运行任务查看完整跟踪)

好吧,这是一个非常愚蠢的错误

我发送的是
字符串
,而不是
文件
对象。我刚刚做了
File.new(视频文件)
,效果很好

Paperclip::AdapterRegistry::NoHandlerError: No handler found for "public/tmp/videos/SampleVideo_720x480_30mb.mkv"
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/io_adapters/registry.rb:19:in `handler_for'
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/io_adapters/registry.rb:29:in `for'
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/attachment.rb:98:in `assign'
/home/vedant/.gem/ruby/2.2.4/gems/paperclip-4.3.7/lib/paperclip/has_attached_file.rb:66:in `block in define_setter'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/attribute_assignment.rb:54:in `public_send'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/attribute_assignment.rb:54:in `_assign_attribute'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/attribute_assignment.rb:41:in `block in assign_attributes'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/attribute_assignment.rb:35:in `each'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/attribute_assignment.rb:35:in `assign_attributes'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/core.rb:566:in `init_attributes'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/core.rb:281:in `initialize'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/inheritance.rb:61:in `new'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/inheritance.rb:61:in `new'
/home/vedant/.gem/ruby/2.2.4/gems/activerecord-4.2.5/lib/active_record/persistence.rb:50:in `create!'
/home/vedant/web/voggle/lib/tasks/dummy.rake:47:in `block (3 levels) in <top (required)>'
/home/vedant/web/voggle/lib/tasks/dummy.rake:46:in `each'
/home/vedant/web/voggle/lib/tasks/dummy.rake:46:in `block (2 levels) in <top (required)>'
/home/vedant/.gem/ruby/2.2.4/gems/airbrake-5.5.0/lib/airbrake/rake/task_ext.rb:19:in `execute'
/home/vedant/.gem/ruby/2.2.4/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
Tasks: TOP => dummy:videos
(See full trace by running task with --trace)