0

我们最近扩展了一个应用程序以使用多个负载平衡服务器,我有一个关于处理回形针附件的问题,更具体地说,是延迟上传到 S3

这是场景:

  • iPhone 应用程序将新数据添加到网络应用程序,包括照片上传。
  • 出于性能考虑,首先将照片存储在本地
  • 我们使用delayed_job处理文件上传到S3

以下是相关代码:

has_attached_file :local

has_attached_file :remote, :styles =>{:thumb =>'100x100'},
                           :path => ":class/photos/:id_partition/:style.:extension",
                           :s3_credentials => "#{Rails.root}/config/amazon_s3.yml",
                           :storage => :s3

after_save :update_remote

def photo
  remote_file_name ? remote : local
end

def photo=(attachment)
  local = attachment
end

def update_remote
  unless self.remote_file_name
    if self.local.exists?
      self.remote = self.local
      self.local = nil
      self.save
    end
  end
end

handle_asynchronously :update_remote

我的问题是,如何将其扩展到多个应用服务器?本地文件将只存在于其中一个上,由于延迟,我不愿意直接上传到 S3。

4

1 回答 1

0

它不能准确回答问题,但我转而使用数据库作为“本地”附件(在传输到 S3 之前)代替文件系统,从而解决了问题

于 2013-08-12T10:52:07.890 回答