4

我在 Rails 应用程序中使用 PaperClip 插件,如下所示:

  has_attached_file :photo, :styles => {:small => '64X64>', :medium => '250X250>'},
                                      :url  => "/assets/user_photos/:id/:style/:basename.:extension",
                                      :path => ":rails_root/public/assets/user_photos/:id/:style/:basename.:extension"
#  validates_attachment_presence :photo
  validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png','image/gif']
  validates_attachment_size :photo, :less_than => 1.megabytes

它在开发(Mac OSX + Mongrel)上运行良好。但是当我将它投入生产(Linux Debian + Apache/Passenger)时,它只接受 .gif 并且对于 .png 和 .jpg 出现以下错误:

 Photo /tmp/stream20091028-20066-1t1a0oz-0 is not recognized by the 'identify' command.
 Photo /tmp/stream20091028-20066-1t1a0oz-0 is not recognized by the 'identify' command.

我尝试按照一些教程的建议添加以下行,但没有帮助!

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

3 回答 3

5

在您的生产服务器上,尝试运行:

which identify

这应该为您提供 ImageMagick 识别二进制文件的路径 - 如果没有,您没有安装 ImageMagick 或者它不在您的路径中。

如果它返回类似“/usr/bin/identify”的内容,那么您需要将您的 production.rb 环境文件中的 Paperclip 选项设置为:

Paperclip.options[:command_path] = "/usr/bin"
于 2009-10-28T15:04:29.663 回答
4

万一其他人遇到这个问题,我在处理 JPG 文件时在我的 Mac OSX Snow Leopard 上遇到了同样的错误(虽然 GIF 文件工作正常)。我正在运行 Rails 3.0.5 和 Paperclip 2.3.11。

[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: /var/folders/9D/9DvX1hqSFr04U3drvD9o0U+++TI/-Tmp-/stream20110420-50661-l9je0z.jpg is not recognized by the 'identify' command.

我通过从源代码安装http://www.ijg.org/files/jpegsrc.v8c.tar.gz上提供的 jpeg 编码库解决了这个问题。

cd /usr/local/src
tar xvfz jpeg-8c.tar.gz
cd jpeg-8c
export MACOSX_DEPLOYMENT_TARGET=10.6
./configure --enable-shared --prefix=$CONFIGURE_PREFIX
make
sudo make install

然后我从源代码重新安装了 ImageMagick:

cd /usr/local/src
tar xvfz ImageMagick-6.6.9-5.tar.gz
cd ImageMagick-6.6.9-5
export CPPFLAGS=-I/usr/local/include
export LDFLAGS=-L/usr/local/lib
./configure --prefix=/usr/local --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8 --disable-openmp
make
sudo make install

之后,我能够使用 Paperclip 成功上传 JPG 文件。

[paperclip] convert '/var/folders/9D/9DvX1hqSFr04U3drvD9o0U+++TI/-Tmp-/stream20110420-86578-3ntsgn.jpg[0]' -resize "100x100>" '/var/folders/9D/9DvX1hqSFr04U3drvD9o0U+++TI/-Tmp-/stream20110420-86578-3ntsgn20110420-86578-iiszw5' 2>/dev/null
...
[paperclip] saving /Users/xxx/myrailsapp/public/system/images/5/original/IMG_0001.jpg
于 2011-04-21T00:09:42.923 回答
0

升级到 Lion 后,我遇到了同样的问题。运行 'identify image.jpg' 引发dyld: Library not loaded错误。

这篇文章帮助解决了这个问题。

于 2012-02-25T22:10:58.020 回答