6

app サーバーと db (mongodb) サーバーの両方が昨夜再起動されました。ファイルがまだ存在しているにもかかわらず、carrierwave にマウントされたすべてのアップローダは、アバターのデフォルトの画像を返しています。

Rackspace CDN でフォグ ストレージを使用しています。各ユーザー モデルには、 のフィールドが含まれていますavatar_filename。実行してみuser.avatar.recreate_versions!ましたが、nil のためにエラーが発生しました。

イメージを復元して (イメージはまだ存在します!)、これが再び起こらないようにする方法はありますか? 私は周りを検索しましたが、これは一般的なプロムではないようです.

私のユーザーモデルでは:

# Avatar
mount_uploader :avatar, AvatarUploader

アバターアップローダ:

class AvatarUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick

  storage :fog

  def default_url
    "/assets/users/profile-default_#{version_name}.png"
  end

  # Large
  version :large do
    resize_to_limit(600, 600)
  end

  # Small
  version :small do
    process :crop
    resize_to_fill(140, 140)
  end

  # Thumbnail
  version :thumb, :from_version => :small do
    resize_to_fill(35, 35)
  end

  def extension_white_list
    %w(jpg jpeg png)
  end

  def filename
    if @filename_created
      @filename_created
    elsif original_filename
      @name ||= Digest::MD5.hexdigest(File.dirname(current_path))
      @filename_created = "a_#{timestamp}_#{@name}.#{file.extension}"
      @filename_created
    end
  end

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

  def crop
    if model.crop_x.present?
      resize_to_limit(600, 600)
      manipulate! do |img|
        x = model.crop_x.to_i
        y = model.crop_y.to_i
        w = model.crop_w.to_i
        h = model.crop_h.to_i
        img.crop!(x, y, w, h)
      end
    end
  end
end
4

1 に答える 1