ruby-on-rails - 用带有 Paperclip 的 mini_magick 替换 RMagick

标签 ruby-on-rails ruby paperclip rmagick minimagick

我正在使用 RMagick 并且很喜欢它,但它正在占用大量内存。即使是一个简单的脚本也会使用超过 100MB 的 RAM。在我的本地计算机上这不是问题,但在 heroku 上,当几个用户同时上传图片时,我的应用程序崩溃了。

我找到了mini_magick并尝试在我的模型中替换它,但找不到解决方案。这是我当前的流程:

  # Validations
  validates :scr, presence: true

  # Paperclip
  has_attached_file :scr,
    styles: {
      index:        ['220x170#', :jpg, quality: :better],
      show:         ['1000', :jpg, quality: :better],
      original:     ['100%', :jpg, quality: :better],
      directionals: ['115x70#', :jpg]
    },
    convert_options: {
      show:         '-quality 90 -unsharp 3x0.4+0.4+0 -interlace Plane',
      index:        '-quality 90 -unsharp 3x0.4+0.4+0 -interlace Plane',
      original:     '-quality 90 -interlace Plane',
      directionals: '-quality 90 -interlace Plane'
    },
    processors: [:thumbnail, :compression]

  # Paperclip Validation
  validates_attachment_content_type :scr, content_type: ['image/jpg', 'image/jpeg', 'image/png']

如何替换 RMagick 并让 Mini_magick 发挥作用?

最佳答案

从 gemfile.add 中删除 Rmagick minimagick到你的 gemfile 并开始使用它

Add the gem to your Gemfile:

gem "mini_magick"

bundle install 

####now start using it with callback/observer 
image = MiniMagick::Image.open("input.jpg")
image.resize "100x100"
image.write  "output.jpg"

您可以使用delayed_paperclip同样,以便在运行时仅转换下一页需要的样式...其余的将其放在后台进行转换,无需更改代码。

 process_in_background :avatar, :only_process => [:show,:original,:directionals]
  ##assuming you next page only need style :index..

关于ruby-on-rails - 用带有 Paperclip 的 mini_magick 替换 RMagick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26013221/

相关文章:

javascript - FB.getLoginStatus 在 Chrome 中不起作用,即使沙盒禁用

ruby-on-rails - 如何通过 Graph API 将应用程序添加到页面? (配考拉 gem )

ruby - Sass/Compass 未使用 Guard 和 Middleman 设置进行编译

ruby - 使用kafka-rb为客户端使用docker进行Kafka设置

mysql - 主动记录查询以从三个关联模型中获取数据

amazon-s3 - 使用 FFMPEG 和 Paperclip 捕获视频长度

ruby-on-rails - 我可以使用 httparty 或 weary 使用 SOAP 网络服务吗?

Ruby:回形针、S3 和深度克隆

ruby-on-rails - 尝试在 Rails 中发布文件时出现 405 错误

ruby-on-rails - 没有这样的文件或目录服务器是否在本地运行并接受 Unix 域套接字 "/tmp/.s.PGSQL.5432"上的连接?