2011-10-13 22 views
5

मैं अपने Rails 3.1.0 आवेदन production वातावरण में passenger के साथ चल रहा है और मैं एक वर्ग जहां आवेदन तो मैं एक का उपयोग कर छवि अपलोड उपयोगकर्ता की अनुमति देता है अपने प्रोफ़ाइल तस्वीर बदलने के लिए नए चित्र पहचान नहीं AJAX अपलोडर और मेरे नियंत्रक में मैं फ़ाइल अपलोड करता हूं और छवि के लिए rmagick के साथ विभिन्न आकार उत्पन्न करता हूं, फिर मैं image_tag के साथ नई छवि प्रस्तुत करता हूं लेकिन एप्लिकेशन तब तक छवि नहीं दिखाएगा जब तक कि मैं सर्वर को पुनरारंभ नहीं करता।रेल 3.1 संपत्ति सर्वर को पुनः आरंभ जब तक rmagick द्वारा अपलोड

मुझे क्या मिलेगा No route matches [GET] "assets/path/to/image.png"

मैं पुनः आरंभ सर्वर यह छवि दिखाई देगा, लेकिन स्पष्ट रूप से मैं सर्वर को पुन: प्रारंभ नहीं किया जा सकता कि हर बार एक उपयोगकर्ता एक नई छवि अपलोड करता है है।

मैं संपत्तियों को सही तरीके से काम करने के तरीके को कैसे हल कर सकता हूं?

+0

अद्यतन जवाब .. – Tilo

उत्तर

6

रेल संपत्ति संपत्ति पाइपलाइन वास्तव में संरचनात्मक/डिजाइन छवियों, जैसे पृष्ठभूमि, आइकन, बैनर आदि के लिए है ..)। गतिशील संपत्तियों को सार्वजनिक निर्देशिका [नीचे स्रोत]

संभवतः निगेंक्स या अपाचे या जो भी आपका वेब-सर्वर है, या अपने रेल ऐप की सार्वजनिक निर्देशिका में स्थिर संपत्तियों की सेवा करना एक अच्छा विचार है।

यह आपकी समस्या को ठीक से हल करना चाहिए .. उदा। स्थिर संपत्तियों के लिए एक अलग पथ बनाएं जिसमें आप उन छवियों को rmagick/carrierwave, या जो भी मणि पसंद करते हैं, अपलोड करें।

संपत्ति पाइपलाइन केवल उन छवियों के बारे में जानता है जो स्टार्ट-अप के दौरान मौजूद हैं। इसलिए स्थिर/अपलोड की गई संपत्तियों को एक अलग निर्देशिका में अलग करना, और सीधे वेब-सर्वर के माध्यम से इसे सेवा देना, मदद करेगा - यह भी बहुत तेज़ होना चाहिए।

आप अपने विन्यास में कुछ इस तरह की आवश्यकता होगी:

# Disable Rails's static asset server (Apache or nginx will already do this) 
config.serve_static_assets = false 

# Compress JavaScripts and CSS 
config.assets.compress = true 

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = false 

# Generate digests for assets URLs 
config.assets.digest = true 

# UNCOMMENT the header that your server uses for sending files 
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 

अधिक सामान्य:

http://railscasts.com/episodes/279-understanding-the-asset-pipeline

http://guides.rubyonrails.org/asset_pipeline.html

Rails 3.1: Should File Uploads be added to asset pipeline?

ima की सेवा के बारे में ges बाहर संपत्ति पाइपलाइन:

http://mrjaba.posterous.com/rails-31-asset-pipeline-with-nginx-and-passen

http://trackingrails.com/posts/rails-31-and-asset-pipeline-problems-with-apache

http://pastebin.com/kC4Ba40U

https://github.com/defunkt/resque/issues/418

नीचे
+0

स्थिति है कि मैं अपने 'रेल 3.1.0' आवेदन की तैनाती कर रहा हूँ है मेरे वेब सर्वर की जड़ पर, इसलिए मेरे पास फाइल करने के लिए कोई दूसरा तरीका नहीं है, लेकिन इस कड़ी मेहनत के लिए इसे बाद में एप्लिकेशन पर हम सीडीएन या एम का उपयोग करेंगे अज़ोन एस 3 लेकिन अभी हम छवियों को रेल अनुप्रयोगों की गड़बड़ी कर रहे हैं, मैंने रेलवे पर डिफ़ॉल्ट रूप से आने वाली संपत्तियों को अक्षम करने का तरीका देखा है, लेकिन अब हम संपत्तियों के साथ काम करने और रेल कोर का उपयोग करने के अन्य फायदों का उपयोग कर रहे हैं , धन्यवाद। –

+0

आप अभी भी रेल के बाहर ऐसा कर सकते हैं, उदा। एक अतिरिक्त निर्देशिका की सेवा के लिए अपने अपाचे या Nginx वेब सर्वर को बताएं, जिसमें रेल में कोई मार्ग नहीं है। – Tilo

+0

क्या आपके पास अपाचे के साथ इसके बारे में कुछ जानकारी है? क्योंकि अब मैं अपने डोमेन के रूट '/' पर एप्लिकेशन की सेवा कर रहा हूं, धन्यवाद। –