12

मैं Ubuntu पर चल रहे एक रेल 3.0.3 एप्लिकेशन पर छवि अपलोड संभाल ओर पेपरक्लिप (2.3) का उपयोग कर रहा हूँ। पेपरक्लिप विज्ञापन के रूप में अपलोड को संभाला जा रहा है लेकिन एप्लिकेशन के/tmp फ़ोल्डर में बनाए गए रैकमल्टीपार्ट * फ़ाइलों को बनाए रखने वाली फ़ाइलें - यानी, वे बस खुद को हटाने के बजाय जमा हो जाते हैं। मुझे एहसास है कि मैं पुराने tmpfiles को हटाने के लिए tmpreaper का उपयोग कर सकता हूं, लेकिन मैं वास्तव में एक और अधिक सुरुचिपूर्ण (और स्केलेबल) समाधान खोजना चाहता हूं।RackMultipart * फ़ाइलें मेरी रेल/tmp निर्देशिका में क्यों चल रही हैं?

मैं अस्थायी फ़ाइलों के साथ पिछले एक मुद्दा (अर्थात RackMultipart * फ़ाइलें) रेल एप्लिकेशन के रूट निर्देशिका में जमा (के बजाय में/tmp) था। मैं स्पष्ट रूप से ऐसा तरह मेरे environment.rb फ़ाइल में अस्थायी पथ सेट करके ऐसा समाधान किया गया:

ENV['TMPDIR'] = Rails.root.join('tmp') 

एक और वातावरण चर कि यह सुनिश्चित करें कि tempfiles ठीक से नियंत्रित किया जाता है बनाने के लिए निर्धारित करने की आवश्यकता है - यानी एक बार हटा दिए मॉडल में सहेजा गया है? मुझे यकीन नहीं है कि यह पेपरक्लिप या मेरे रेल सेटअप के साथ एक समस्या है।

मैं उच्च और निम्न खोज की है, लेकिन इस पर बहुत कम प्रगति की है। मैं किसी भी लीड के लिए आभारी रहूंगा।

ईमानदारी धन्यवाद।

पीएस - मैं वर्तमान में भंडारण के लिए एस 3 का उपयोग कर उपयोग कर रहा हूं। हालांकि यह समस्या से जुड़ा हुआ प्रतीत नहीं होता है - जब मैं स्थानीय रूप से फ़ाइलों को संग्रहीत कर रहा था तो मुझे वही समस्या थी।

+0

अब मैं क्रॉन और tmpreaper का उपयोग कर tempfile मुद्दे से निपटने के लिए कर रहा हूँ। सीआरओएन मेरी टीएमपी निर्देशिका को साफ़ करने के लिए हर 10 मिनट में टेंपरपेपर चलाता है। अभी भी एक और अधिक सुरुचिपूर्ण फिक्स पसंद आएगा लेकिन ऐसा लगता है कि यह अभी काम कर रहा है। – NAD

+0

आप किस सर्वर का उपयोग कर रहे हैं? प्यूमा शायद? –

+0

रैक devel समूह में एक प्रासंगिक धागा: https://groups.google.com/forum/#!searchin/rack-devel/temp/rack-devel/brK8eh-MByw/sw61oJJCGRMJ –

उत्तर

5

अगर यह अब और सुरुचिपूर्ण है मैं नहीं जानता, लेकिन इस के बाद फ़ाइल "सहेजा जाता है

tempfile = params[:file].tempfile.path 
if File::exists?(tempfile) 
    File::delete(tempfile) 
end 
+1

मैं दिखाई दे रही है * दो समान * अस्थायी बनाई जा रही फाइलें, उनमें से केवल एक को हटाएगी (https://github.com/rack/rack/issues/641) –

0

अद्यतन मैं क्या कर रहा हूँ है:। समस्या रैक 1.6.0.beta2 सुलझाया जाना चाहिए मैं देखना यह पहले से ही रेल 4.2.0.rc2 में इस्तेमाल किया जा रहा

वैकल्पिक हल के नीचे मुझे लगभग एक साल तक अच्छी तरह से सेवा की है:।

मैं नियंत्रक कार्रवाई के अंत में इस जोड़ दिया है कि फ़ाइल अपलोड स्वीकार करता है:

012,

यह अप्रयुक्त रैक :: अनुरोध वस्तुओं जो भी अस्थायी फ़ाइलों जुड़े हटाने से की कूड़ा संग्रह से चलाता है। नोट यह वर्तमान अनुरोध के अस्थायी फ़ाइल स्वीप नहीं है, लेकिन यह पिछले फ़ाइलों को हटा दें करता है, और उन्हें जमा करने से रोकता है।

9

TempFileReaper रैक मिडलवेयर इस मुद्दे को संभालने के लिए सोचा गया है।

http://www.rubydoc.info/github/rack/rack/Rack/TempfileReaper

application.rb में इस लाइन भी शामिल है समस्या का हल:

config.middleware.use Rack::TempfileReaper 
+1

आपने अपना जीवन बचाया। –

+1

यह सही उत्तर है, क्योंकि ये अस्थायी फ़ाइलें रैक का डोमेन हैं (जाहिर है उनके फ़ाइल नाम से)।पेपरक्लिप का उपयोग करते समय यह किसी भी रूप मल्टीपार्ट अपलोड के लिए होता है। TempfileReaper midware 1.6.0 में रैक में जोड़ा गया था लेकिन स्पष्ट रूप से रेल द्वारा डिफ़ॉल्ट रूप से सक्षम नहीं किया गया है। – CMcClymont

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^