Paperclip :: Errors :: NotIdentifiedByImageMagickError(Win 7)

时间:2016-02-13 09:35:58

标签: ruby-on-rails ruby paperclip

我收到“Paperclip :: Errors :: NotIdentifiedByImageMagickError”错误。为了解决这个问题,我将行Paperclip.options[:command_path] = '/usr/local/bin'添加到了我的development.rb文件中。但是我也遇到了“图像的内容不是他们报道的内容”,我之前用Paperclip.options[:command_path] = 'C:\Program Files (x86)\GnuWin32\bin'

解决了这个问题。

问题是,在我的development.rb文件中有两行后,一行会覆盖另一行,这样如果'/usr/local/bin'的行是第一行,我将收到“Paperclip :: Errors :: NotIdentifiedByImageMagickError“错误,如果'C:\Program Files (x86)\GnuWin32\bin是第一个,我将收到”图像的内容不是他们报告的内容“错误。

在我的user.rb中,我有以下内容:

has_attached_file :avatar,
  :path => ":rails_root/public/system/:attachment/:id/:style/:filename",
  :url => "/system/:attachment/:id/:style/:filename",
  :styles => {:small => "150x150>"}
do_not_validate_attachment_file_type :avatar

如果我不包含样式,并且从development.rb文件中删除'/usr/local/bin'行,则上传图像效果很好。

我已尝试在https://github.com/thoughtbot/paperclip上的以下说明通过编辑PATH变量而不需要'C:\Program Files (x86)\GnuWin32\bin行,但这不起作用。

1 个答案:

答案 0 :(得分:0)

<强>的file.exe

问题似乎是您无法访问file.exe

file.exe允许Paperclip / ImageMagick识别您上传的附件。对于文件类型(validates_attachment :attachment, content_type ...)进行验证非常重要。

当您使用Paperclip / Imagemagick时,您必须确保Ruby可以访问file。为此,我在Paperclip中写了docs,因为我有同样的问题:

由于您已经安装了file,因此需要让Ruby可以访问它。有两种方法可以做到这一点;将其添加到PATH系统var,devleopment.rb中明确定义:

<强> PATH

  
      
  1. 点击“开始”
  2.   
  3. 在“计算机”上,右键单击并选择“属性”
  4.   
  5. 在“属性”中,选择“高级系统设置”
  6.   
  7. 单击“环境变量”按钮
  8.   
  9. 找到“PATH”var - 在最后,添加新安装的file.exe的路径(通常为C:\Program Files (x86)\GnuWin32\bin
  10.   
  11. 重新启动已打开的所有C​​MD外壳看看它是否有效
  12.   

使用上述 not 需要development.rb中的任何定义。

-

<强> development.rb

如果您想明确定义路径(如果不使用“PATH”方法,则再次 ),您可以将以下内容添加到development.rb

 Paperclip.options[:command_path] = 'C:\Program Files (x86)\GnuWin32\bin'
对于Linux,

/usr/local/bin ;您只需要定义command_path一次。

<强>更新

以下内容使系统正常运行:

  1. 我们安装了rmagick gem(gem install rmagick --platform=ruby -- '--with-opt-dir="..."'
  2. 我们将所有PATH变量放入 system PATH var(而不是仅用户变量):
  3. enter image description here 3.在使用Rails进行测试之前,我们测试了fileimagemagick 一旦两者都工作,我们用Rails&amp; amp;它起作用了