3

ペーパークリップを使用してファイルを s3 ストレージにアップロードしています。ファイルがアップロードされたら、Jcrop を使用してトリミングしようとしています。実行するlogo.reprocess!と、s3ではなくローカルでファイルを検索しようとし、No such file or directoryエラーが発生します。ここに関連するコードがあります

  has_attached_file :logo,
    styles: { thumb: "145x75#", large: "500x500" },
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :processors => [:cropper]

  def cropping_logo?
    !logo_crop_x.blank? && !logo_crop_y.blank? && !logo_crop_w.blank? && !logo_crop_h.blank?
  end

  def logo_geometry(style = :original)
    @geometry ||= {}
    path = (logo.options[:storage]==:s3) ? logo.url(style) : logo.path(style)
    @geometry[style] ||= Paperclip::Geometry.from_file(path)
  end

  def reprocess_logo
      logo.reprocess!
  end

module Paperclip
  class Cropper < Thumbnail
    def transformation_command
      if crop_command
        crop_command + super.sub(/ -crop \S+/, '')
      else
        super
      end
    end

    def crop_command
      target = @attachment.instance
      if target.cropping_logo?
      " -crop '#{target.logo_crop_w.to_i}x#{target.logo_crop_h.to_i}+#{target.logo_crop_x.to_i}+#{target.logo_crop_y.to_i}'"
      end
    end
  end
end

ここに助けのためのいくつかのスタックトレースがあります

/usr/local/ruby/lib/ruby/1.9.1/fileutils.rb:1423:in `stat'
/usr/local/ruby/lib/ruby/1.9.1/fileutils.rb:1423:in `block in fu_each_src_dest'
/usr/local/ruby/lib/ruby/1.9.1/fileutils.rb:1439:in `fu_each_src_dest0'
/usr/local/ruby/lib/ruby/1.9.1/fileutils.rb:1421:in `fu_each_src_dest'
/usr/local/ruby/lib/ruby/1.9.1/fileutils.rb:391:in `cp'
paperclip (3.0.2) lib/paperclip/io_adapters/attachment_adapter.rb:53:in `copy_to_tempfile'
paperclip (3.0.2) lib/paperclip/io_adapters/attachment_adapter.rb:44:in `cache_current_values'
paperclip (3.0.2) lib/paperclip/io_adapters/attachment_adapter.rb:6:in `initialize'
paperclip (3.0.2) lib/paperclip/io_adapters/registry.rb:29:in `new'
paperclip (3.0.2) lib/paperclip/io_adapters/registry.rb:29:in `for'
paperclip (3.0.2) lib/paperclip/attachment.rb:91:in `assign'
paperclip (3.0.2) lib/paperclip/attachment.rb:279:in `reprocess!'
4

1 に答える 1

1

同じ問題があります。Paperclip v3 コードに関連していると思います。

古いバージョンを使用するように Gemfile で指定しました。

# Gemfile
gem "paperclip", "~> 2.7.0" 

そして、トリミングが機能します。それがあなたにとって良い解決策かどうかはわかりませんが、当面はうまくいきます。

于 2012-06-26T16:04:20.273 に答える