2009-10-28 161 views
4

我用回形針插件在我的Rails應用程序如下:probem用回形針接受JPG和PNG生產

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版+雜種狗)的罰款。但是,當我把它在生產(Debian的Linux的+ APACHE /乘客),只接受.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" 

任何想法?

感謝,

+1

我還沒有看到這個確切的錯誤,但有*相似*問題時,imagemagick/rmagick沒有被正確編譯。從內存我不得不重新編譯,並確保他們編譯與Gzip/libjpeg/libtiff支持 – ADAM 2009-10-28 08:44:21

回答

5

在生產服務器,嘗試運行:

which identify 

這應該給你ImageMagick的路徑中識別的二進制 - 如果沒有你不沒有安裝ImageMagick,或者它不在你的路徑中。

如果返回類似「在/ usr/bin中/確定」,然後你要設置你的production.rb環境文件的回形針選項:

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

謝謝Bensie。它實際上給了:/ usr/local/bin/identify – Tam 2009-10-28 15:34:55

+0

然後你可能沒有安裝必要的庫。 ImageMagick可能是一個野獸,特別是從源代碼安裝時。如果可能,請使用操作系統的軟件包管理器進行安裝 - 我已經獲得了更多的成功。你使用什麼發行版? – bensie 2009-10-28 19:23:05

+0

我在我的服務器上使用Linux Debian。我記得很久以前安裝它,它在我以前的Ruby 1.8.6/Rails 2.3.2項目中工作,但我無法使用回形針。現在我正在使用Ruby 1.9 Rails 2.3.4。你認爲這有所作爲? – Tam 2009-10-29 03:58:41

4

萬一別人運行到這個問題,我在處理JPG文件(GIF文件雖然工作正常)時,在我的Mac OSX Snow Leopard上出現了同樣的錯誤。我正在運行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. 

我通過從源安裝可用的JPEG編碼文庫在http://www.ijg.org/files/jpegsrc.v8c.tar.gz固定的問題。

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 

之後,我能成功上傳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 
+0

這就是我想要的!謝諾野蠻幹活! – Neo 2011-08-03 16:23:29

0

我不得不升級到獅子後,同樣的問題。運行'identify image.jpg'時拋出了dyld: Library not loaded錯誤。

This post幫助解決了這個問題。