【问题标题】:Paperclip image uploads in Rails - Paperclip::CommandNotFoundError在 Rails 中上传回形针图像 - Paperclip::CommandNotFoundError
【发布时间】:2011-03-14 10:20:00
【问题描述】:

我正在使用回形针来处理上传到 rails 的图像。它在我的开发 OSX 机器上运行良好,但现在在我的网络服务器上出现此错误:

[paperclip] /Users/marky/bin/identify '-format' '%wx%h' '/tmp/stream,16451,2.JPG[0]' 2>/dev/null
[paperclip] An error was received while processing: #<Paperclip::CommandNotFoundError: Paperclip::CommandNotFoundError>
[paperclip] /Users/marky/bin/identify '-format' '%wx%h' '/tmp/stream,16451,2.JPG[0]' 2>/dev/null
[paperclip] An error was received while processing: #<Paperclip::CommandNotFoundError: Paperclip::CommandNotFoundError>

现在我明白了原因;识别实际上在 /usr/bin/ 而不是 /Users/marky/bin/ 来自我的开发机器。我有:

Paperclip.options[:command_path] = "/usr/bin"

在我的development.rb 中,但我仍然收到错误消息。我不知道如何解决这个问题,有人可以帮忙吗?

【问题讨论】:

  • 我也遇到了同样的问题。在我的情况下,它似乎与乘客有关,因为它与杂种动物配合得很好。您在使用乘客吗?
  • 我遇到了类似的错误,但是当我在 development.rb 中设置 Paperclip.options[:command_path] = "/usr/bin" 时,它现在可以工作了。 ps,我在 Heroku 上

标签: ruby-on-rails ruby-on-rails-plugins paperclip


【解决方案1】:

安装以下软件包以使用 imagemagick

1) apt-get install imagemagick
2) apt-get install libmagickwand-dev
3) gem install rmagick

我认为你错过了第二个。

【讨论】:

  • apt-get install imagemagick 读取包列表...完成 构建依赖树 读取状态信息...完成 imagemagick 已经是最新版本。以下软件包已自动安装且不再需要: apa​​che2-mpm-worker libapr1 libaprutil1-ldap apache2-utils apache2.2-common libaprutil1-dbd-sqlite3 apache2.2-bin ssl-cert libaprutil1 使用 'apt-get autoremove'删除它们。 0 个已升级,0 个新安装,0 个要移除,0 个未升级。
  • apt-get install libmagickwand-dev 读取包列表...完成 构建依赖树 读取状态信息...完成 libmagickwand-dev 已经是最新版本。以下软件包已自动安装且不再需要: apa​​che2-mpm-worker libapr1 libaprutil1-ldap apache2-utils apache2.2-common libaprutil1-dbd-sqlite3 apache2.2-bin ssl-cert libaprutil1 使用 'apt-get autoremove'删除它们。 0 个已升级,0 个新安装,0 个要移除,0 个未升级。
  • gem install rmagick 构建原生扩展。这可能需要一段时间... 成功安装 rmagick-2.13.1 1 个 gem 安装 谢谢!刚刚运行了以上所有内容。这是否意味着 rmagick 实际上没有安装?
【解决方案2】:

如果您使用Passenger 托管您的应用程序,请记住Passenger 没有与您的登录用户相同的$PATH 变量。检查Passenger是否可以看到ImageMagick命令的一个好方法是将其添加到您的erb模板之一:

<%= `which convert` %>
<%= `echo $PATH` %>

并将结果与​​在终端中运行相同的命令进行比较。另一种可能性是 ImageMagick 找不到它需要的库。在这种情况下,您可能需要导出另一个变量以让 ImageMagick 知道库的位置:

# my config/environments/development.rb
Paperclip.options[:command_path] = "DYLD_LIBRARY_PATH='/Users/jch/Library/ImageMagick-6.6.3/lib' /Users/jch/Library/ImageMagick-6.6.3/bin"

希望对你有所帮助-杰瑞

【讨论】:

  • 同理,你可以直接输入shell:heroku console %x{convert -version}+%x{which convert}
  • 确保在将 Paperclip.options[:command_path] 添加(或更改)到 environment/development.rb 之后重新启动服务器
【解决方案3】:

您可以在您的机器上安装 ImageMagick。 产生这些问题是因为它找不到某些方法。

要检查您的机器上是否安装了 ImageMagick,只需在终端上运行“转换”命令。

【讨论】:

  • 您好,感谢您的回复。是的,我的机器上安装了 ImageMagick。当我在终端中运行“转换”命令时,它运行良好。还有其他想法吗?这显然是路径,但我不知道如何改变它。
  • 啊,但是如果我从命令行运行'identify',无论我从哪个文件夹运行它都运行良好,这是否意味着还有另一个问题?
【解决方案4】:

在我的情况下,在生产服务器(NGINX + 乘客)的环境文件下设置 Paperclip 命令路径选项不起作用。

我已经在 paperclip.rb 初始化文件中设置了它:

Paperclip.options[:command_path] = "/usr/bin/" if Rails.env.production?

【讨论】:

  • 我在更新 nginx 后遇到了这个问题。感谢您的解决方案!
【解决方案5】:

通过运行检查您是否安装了 imagemagick

 which convert

在您的控制台中。就我而言,结果如下:

$ which convert
/usr/bin/convert

然后我将以下行添加到 config/environments/development.rb 告诉 Paperclip 在哪里可以找到 Imagemagick

Paperclip.options[:command_path] = "/usr/local/bin/"

【讨论】:

  • 如果 which convert 显示 /usr/bin/convert ,在 paperclip.options[:command_path] = "/usr/local/bin/" 或 aperclip.options[:command_path] = "/usr/ bin/convert/"
猜你喜欢
  • 1970-01-01
  • 2018-08-25
  • 2012-07-03
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多