备份MySQL数据库以及存储在S3中的CarrierWave上传

时间:2015-02-05 12:04:38

标签: mysql ruby-on-rails amazon-s3 backup carrierwave

在Rails应用程序中,我想备份MySQL数据库以及存储在Amazon S3中的CarrierWave上传。我已经研究过S3对象版本,但无法在CarrierWave中找到任何支持。

以前有人这样做过吗?或任何想法?

1 个答案:

答案 0 :(得分:0)

class BaseUploader < CarrierWave::Uploader::Base
  # Override the filename of the uploaded files:
  def filename
    return unless original_filename

    if model && model.read_attribute(mounted_as).present? && model.changed.blank?
      model.read_attribute(mounted_as)

    else
     ext = File.extname(original_filename)
     base = File.basename(original_filename, ext)

     "#{base}_#{token}#{ext}"
    end
  end

  # override method to avoid deletion of file
  def remove!; end

protected
  def token
    var = :"@#{mounted_as}_token"
    model.instance_variable_get(var) or model.instance_variable_set(var, Time.now.to_i)
  end
end

我每次上传文件时都使用这种方法创建唯一的文件名,因此避免了用同名的名称覆盖以前的文件的可能性。另外,我已将CarrierWave配置为不在更新时删除以前存储的文件。所以,现在如果我恢复数据库备份,图像就会在那里。

Snippet受create random and unique filenames启发。