And*_*bbs 4 homebrew ruby-on-rails imagemagick paperclip ruby-on-rails-3
我在尝试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
Run Code Online (Sandbox Code Playgroud)
尝试设置图标的示例:
u = User.last
u.icon = open(Rails.root + "spec/fixtures/files/example.png")
u.save
Run Code Online (Sandbox Code Playgroud)
示例模型错误:
:icon => ["/var/folders/43/810gn/T/example20121104-36855-1v7t136.png is not recognized by the 'identify' command."]
Run Code Online (Sandbox Code Playgroud)
有很多人在这个问题上发过类似的问题,尤其是这个问题,但这些解决方案都不适合我.
我的command_path设置正确:
O:~ $ which identify
/usr/local/bin/identify
Run Code Online (Sandbox Code Playgroud)
在 development.rb
Paperclip.options[:command_path] = "/usr/local/bin/"
Run Code Online (Sandbox Code Playgroud)
但这仍然可能是问题所在. 当试图直接使用`识别时,我得到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
关于这里发生了什么的任何建议?
我试过重新安装ImageMagick
brew unlink imagemagick
brew install imagemagick
Run Code Online (Sandbox Code Playgroud)
其他人建议添加Rmagick.绝对不是使用Paperclip的要求,它也没有帮助.
建议的另一个解决方案是删除该:style属性.但这不是解决方案.我需要对图像进行处理.
我让Paperclip在我的项目中处理另一个模型,该模型处理的文档不是图像/不进行任何处理.所以我知道它可能与此有关.
关于如何解决这个问题的任何其他建议?
这是一个ImageMagick安装问题.
第一次尝试
brew update
brew upgrade imagemagick
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请使用magick-installer脚本来解决此问题:https: //github.com/maddox/magick-installer
curl https://raw.github.com/maddox/magick-installer/master/magick-installer.sh | sh
Run Code Online (Sandbox Code Playgroud)
或者,使用magick-installer的fork 与较新版本的依赖库:
curl https://raw.github.com/GTSouza/magick-installer/master/magick-installer.sh | sh
Run Code Online (Sandbox Code Playgroud)
解决方案最终是安装libtool. 这也是这里最好的建议。我的问题被证明更加复杂,因为它homebrew不是最新的,并且处于在不强制检出 master 的情况下无法更新的状态。
对于将来遇到此问题的人,我建议手动检查该identify命令是否确实有效,即使它在您的路径中。
identify /path/to/some/image
Run Code Online (Sandbox Code Playgroud)
如果失败,它将显示如下内容:
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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,请尝试安装libtool.
brew install libtool
Run Code Online (Sandbox Code Playgroud)
如果失败,请运行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
Run Code Online (Sandbox Code Playgroud)
glebm 的答案也很可能奏效。我没有看过那个安装程序。
| 归档时间: |
|
| 查看次数: |
4194 次 |
| 最近记录: |