1

このソリューションを使用して画像の寸法を取得しようとしています。開発中はうまく機能しますが、ステージング(フォグを使用)ではimg = ::Magick::Image::read(@file.file).firstスローされます: private method 'file' called for #<CarrierWave::Storage::Fog::File:0x00000008fe28d0>

霧でファイルを取得するにはどうすればよいですか?

アップデート:

carrirwave_backgrounder画像を非同期で処理するために使用しています。これはコードの一部です:

# the uploader
def geometry
  @geometry ||= get_geometry
end

def get_geometry
  if(@file)
    img = ::MiniMagick::Image.open(@file.file)
    @geometry = {width: img[:width], height: img[:height]}
  end
end

# the model
mount_uploader :image, ImageUploader
process_in_background :image
before_save :set_dimensions


def set_dimensions
  geometry = self.image.geometry
  self.width = geometry[:width]
  self.height = geometry[:height]
end

これが作成されたときではなく、モデルを更新したときにエラーが表示されることがわかったので、コールバックをに変更してbefore_create :set_dimensions正常に動作しました。私が更新しているとき、ファイルはアセットホストにあるだけですが、推測にすぎないためだと思います。

4

1 に答える 1