jpegrecompress 工作人员:找不到 `jpeg-recompress`;

jpegrecompress worker: `jpeg-recompress` not found;

我最近在 Heroku 上的 Rails 4 应用程序中安装了 paperclip-optimizer gem。每当我尝试保存上传的图像附件时,我都会收到以下错误:jpegrecompress worker: 'jpeg-recompress' not found; 在我来自 Heroku 的日志中,但不在本地主机上。

我不确定我错过了什么。我似乎找不到关于此问题的单个 Whosebug post、博客 post 或其他资源。

这是我的 config/initializers/paperclip_optimizer.rb:

Paperclip::PaperclipOptimizer.default_options = {
    skip_missing_workers: true,
    advpng: false,
    gifsicle: false,
    jhead: false,
    jpegoptim: false,
    jpegrecompress: true,
    jpegtran: false,
    optipng: false,
    pngcrush: false,
    pngout: false,
    pngquant: true,
    svgo: false,
    nice: 10,             # Nice level (defaults to 10)
    threads: 1,           # Number of threads or disable (defaults to number of processors)
    verbose: false,       # Verbose output (defaults to false)
    pack: nil,            # Require image_optim_pack or disable it, by default image_optim_pack will be used if available,
    allow_lossy: true,   # Allow lossy workers and optimizations (defaults to false)
    jpegrecompress: {
        quality: 2          # JPEG quality preset: 0 - low, 1 - medium, 2 - high, 3 - veryhigh (defaults to 3)
    },
    pngquant: {
        quality: 100..100,  # min..max - don't save below min, use less colors below max (both in range 0..100; in yaml - !ruby/range 0..100) (defaults to 100..100)
        speed: 3            # speed/quality trade-off: 1 - slow, 3 - default, 11 - fast & rough (defaults to 3)
    }
}

在我的 photo.rb 模型中我有:

has_attached_file :image, styles: { large: "600x600>", medium: "300x300>", thumb: "100x100>" }, default_url: "", processors: [:thumbnail, :paperclip_optimizer]

在我的 Heroku .buildpacks 文件中,我有:

https://github.com/ddollar/heroku-buildpack-multi.git
https://github.com/heroku/heroku-buildpack-ruby.git
https://github.com/bobbus/image-optim-buildpack.git

我添加了 Ruby buildpack 来解决 我之前遇到的问题,但现在似乎没有加载 multi 和 image-optim buildpacks。

谢谢!

经过多次敲击键盘,我想出了解决问题的方法。就我而言,我是 运行 Rails 4.0 应用程序,位于 Cedar-14 堆栈 运行 Puma 网络服务器上,因此这些说明可能是也可能不是如果您的配置不同,对您有用。

  1. 我按照这篇 Heroku Dev Center 文章中的步骤操作,将多个构建包添加到一个应用程序,现在 Heroku 支持它。 就我而言,我为我的应用程序添加了以下构建包:

    === staging-app Buildpack URLs
    1. https://github.com/bobbus/image-optim-buildpack.git
    2. https://github.com/heroku/heroku-buildpack-ruby.git
    

    顺序很重要。列表中的最后一个 buildpack 是第一个要加载的。在我的例子中,我需要 Ruby buildpack 以便识别我的 Procfile 中的 bundle 命令。 有关该问题的更多信息。

  2. 不要使用 Heroku-Buildpack-Multi。据我了解,这是支持多个构建包的旧方法。添加这个会导致你的推送被拒绝。

  3. 在我的 Gemfile 中,我需要包含 image_optim and image_optim_pack 个 gem。据我了解,这些 gems 使适当的二进制文件在 OS X 和 Linux 环境中可用。在 Gemfile 中将这些 gems 放在 paperclip-optimizer 之前非常重要,就像这样

    gem 'paperclip', '~> 4.1'
    group :production do
        # Needs to be placed before paperclip-optimizer
        gem 'image_optim'
        gem 'image_optim_pack'
    end
    gem 'paperclip-optimizer'
    
  4. 根据需要配置 paperclip-optimizer 设置并投入生产。

希望这对遇到我这种情况的人有所帮助。