4

尝试将 a 保存png到带有回形针附件的模型时出现错误。

我的User模型:

class User < ActieRecord::Base
  attr_accessible :icon
  has_attached_file :icon, :url => "/system/users/icon/:hash.:extension",
    :hash_secret => "superSecretHashSecret",
    :styles => { :medium => "300x300>", :thumb => "100x100>" }
end

尝试设置图标的示例:

u = User.last
u.icon = open(Rails.root + "spec/fixtures/files/example.png")
u.save

示例模型错误:

:icon => ["/var/folders/43/810gn/T/example20121104-36855-1v7t136.png is not recognized by the 'identify' command."]

有很多人发布了与这个类似的问题,尤其是这个,但这些解决方案都不适合我。

我的 command_path 设置正确:

O:~ $ which identify
/usr/local/bin/identify

development.rb

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

不过,这仍然可能是问题所在。 尝试直接使用 `identify 时,出现以下错误:

O:~ $ identify workspace/app/spec/fixtures/files/example.png 
dyld: Library not loaded: /usr/lib/libltdl.7.dylib
  Referenced from: /usr/local/bin/identify
  Reason: image not found
Trace/BPT trap: 5

关于这里发生了什么的任何建议?

我已经尝试重新安装 ImageMagick

brew unlink imagemagick
brew install imagemagick

其他人建议添加Rmagick. 这绝对不是使用 Paperclip 的要求,它也没有帮助。

建议的另一个解决方案是删除该:style属性。但这不是解决方案。我需要对图像进行处理。

我有 Paperclip 在我的项目中处理另一个模型,该模型处理不是图像的文档/不进行任何处理。所以我知道这可能与此有关。

关于如何解决这个问题的任何其他建议?

4

4 回答 4

9

这是一个 ImageMagick 安装问题。

第一次尝试

brew update
brew upgrade imagemagick

如果这不起作用,请使用magick-installer脚本来解决这个问题: https ://github.com/maddox/magick-installer

curl https://raw.github.com/maddox/magick-installer/master/magick-installer.sh | sh

或者,使用具有较新版本的依赖库的magick-installer的分支:

curl https://raw.github.com/GTSouza/magick-installer/master/magick-installer.sh | sh
于 2012-11-05T00:02:15.820 回答
5

解决方案最终是安装libtool. 这也是这里最好的建议。我的问题被证明更复杂,因为homebrew不是最新的,并且在不强制结帐的情况下无法更新的状态。

对于将来遇到此问题的人,我建议手动检查该identify命令是否确实有效,即使它在您的路径中也是如此。

identify /path/to/some/image

如果失败,它将显示如下内容:

O:~ $ identify workspace/app/spec/fixtures/files/example.png 
dyld: Library not loaded: /usr/lib/libltdl.7.dylib
  Referenced from: /usr/local/bin/identify
  Reason: image not found
Trace/BPT trap: 5

在这种情况下,请尝试安装libtool.

brew install libtool

如果失败,请运行brew update. 如果它继续失败,请确保您安装了最新的 Xcode 并再次尝试更新。

如果您可以成功使用identity. 它看起来像这样:

O:~ $ identify ~/workspace/app/spec/fixtures/files/example.png 
~/workspace/app/spec/fixtures/files/example.png PNG 200x201 200x201+0+0 8-bit DirectClass 66.1KB 0.000u 0:00.000

glebm 的答案可能也很有效。我没有看过那个安装程序。

于 2012-11-05T00:08:15.510 回答
0

这可能是由于将旧版本的 Paperclip 与较新且不兼容的 Cocaine gem 版本一起使用造成的。您可以使用更新回形针 gem 版本bundle update paperclip。它将根据兼容性更新回形针和可卡因版本。

https://github.com/thoughtbot/paperclip/issues/1038

于 2013-07-26T19:23:20.633 回答
0

在我的 Mac 上升级到 Mavericks 后,我刚刚遇到了同样的问题。

以下是解决问题的步骤:

brew update
brew install libtool
brew link libtool
brew upgrade imagemagick
于 2013-11-04T14:59:31.817 回答