代码之家  ›  专栏  ›  技术社区  ›  Kevin Sylvestre

回形针处理器在S3上运行

  •  3
  • Kevin Sylvestre  · 技术社区  · 15 年前

    我正在尝试创建一个自定义 Paperclip::Processor 与外部Web服务集成的(每当上载新文件时,处理器将调用Web服务)。外部服务需要该文件存在于S3中,并将处理的版本自动上载到S3。

    这个可以用定制的吗 回形针:处理器 还是应该使用ActiveRecord回调来完成?如果A 回形针:处理器 可以,什么是触发上传的最佳方法?理想情况下,我想做一个处理器,但要求是原始文件 必须 先上传到S3。我看了一下 after_create 但有时似乎与 后创造 用于回形针。谢谢。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Ariejan    15 年前

    您可以这样做来创建文件的本地副本。如果在S3上,它将被下载。

    tmp_file = @model.attached_file.to_file => TempFile<...>
    

    然后您可以对此tempfile执行操作。当你是唐的时候:

    @model.attached_file = tmp_file
    @model.save
    

    编辑:误读你的问题。你可以使用 before_post_process after_post_process 挂接以在处理文件之前或之后执行任务。

    class Model < AR::Base
      has_attached_file :avatar
    
      after_post_process :ping_webservice
    
      private
    
      def ping_webservice
        # Do your magic here.
      end
    end
    
        2
  •  2
  •   pushmatrix    15 年前

    我最近处理了一个类似的问题,它是在保存后的回调中处理的。我在定义完“保存后”后,通过定义回形针(已附加“文件…”)来解决我的问题。这样,回电会在我的回电后触发。