2011-06-27 25 views
9

Çok parçalı formda yüklenen görüntülerde bazı görüntülerin yeniden boyutlandırılması için MiniMagick kullanıyorum. Orijinal olarak yüklenen dosyadan birkaç farklı resim türü oluşturmam gerekiyor. İşte görüntü işleme gerçekleştiren koddur:Bir Ruby on Rails uygulamasında MiniMagick'i kullanırken geçici dosyalar nereye gider?

// Generates a thumbnail image 
mm = MiniMagick::Image.open(Rails.root.join('public', 'uploads', new_url)) 
mm.resize(thumbnail_dimensions.join("x")) 
mm.write(Rails.root.join('public', 'uploads', "t_"+new_url)) 

// Generates cropped version 
mm_copy = MiniMagick::Image.open(Rails.root.join('public', 'uploads', new_url)) 
mm_copy.crop('200x200') 
mm_copy.write(Rails.root.join('public', 'uploads', "c_"+new_url)) 

new_urlpublic klasörde görüntüye yoludur. Küçük resim rutin mükemmel çalışır. Uygulama kırpılmış sürümü işlemeye başladığında, işlerin kırılmaya başladığı yer burası ve benim hayatım için bunu yapamam. Ben ne zaman bu koddan aşağıdaki hatayı alırsınız: Rails çöp toplayıcısı ile olası yarış koşulları hakkında bazı şeyler okudum ama sorunu çözmek mümkün değildi

No such file or directory - /tmp/mini_magick20110627-10055-2dimyl-0.jpg 

. Bunu konsoldan da denedim ve MiniMagick örneklerini oluşturabilirim ancak No such file hatalarını da buradan alabilirsiniz. Bu noktada nereye gideceğime dair hiçbir fikrim yok, bu yüzden burada birilerinin yararlı önerileri olduğunu umuyorum. Yardım ettiğin için teşekkür ederim!

Detaylar:

  • OS: Ubuntu (Lucid Lynx)
  • Raylar Versiyon: 3.0.7
  • Yakut Versiyon: 1.8.7
  • MiniMagick Versiyon: 3,3
+0

Yukarıdaki küçük resim hatları mahsul kod çalışması açıklama mu eğer WEBrick sunucu yeniden? – Joshua

+0

Hmmm ... Bunu denemedim. Şimdi bu projeye geri dönüyorum, böylece kontrol edip sonuçları gönderiyorum. –

cevap

3

muhtemelen burada belirtilen yarış koşuludur:

https://ar-code.lighthouseapp.com/projects/35/tickets/6-race-condition-with-temp_file

burada bir Çözüm şudur:

http://rubyforge.org/tracker/index.php?func=detail&aid=9417&group_id=1358&atid=5365

alternatif ve muhtemelen daha kolay, bu deneyebilirsiniz:

// Generates a thumbnail image 
mm = MiniMagick::Image.open(Rails.root.join('public', 'uploads', new_url)) 
mm_copy = mm.clone # clone the opened Image, instead of re-opening it 

mm.resize(thumbnail_dimensions.join("x")) 
mm.write(Rails.root.join('public', 'uploads', "t_"+new_url)) 

// Generates cropped version 
mm_copy.crop('200x200') 
mm_copy.write(Rails.root.join('public', 'uploads', "c_"+new_url)) 
7

Eğer ImageMagick yüklü mü? Değilse, sudo apt-get install ImageMagick, deneyin ve sonra

+4

Bu gerçek komuttur => sudo apt-get install imagemagick –