2015-12-08 16 views
7

के लिए AssetSync मणि के लिए वैकल्पिक हाल ही में, हेरोोकू में मेरे नवीनतम तैनाती पर, मुझे चेतावनी मिली advising not to use AssetSyncहेरोकू

remote: ###### WARNING: 
remote:  You are using the `asset_sync` gem. 
remote:  See https://devcenter.heroku.com/articles/please-do-not-use-asset-sync for more information. 

मूल समस्या हम AssetSync का उपयोग करके हल करने के लिए कोशिश कर रहे थे कि हम अपने आवेदन में बड़े संपत्ति की वजह से एक विशाल स्लग आकार मिल रहे थे था। 300 एमबी में से हैरोकू हमें अनुमति देता है, हम शायद 230 एमबी के करीब उपयोग कर रहे थे - भले ही हमारा गिट रेपो केवल 80 एमबी है।

हमने क्लाउडफ़्रंट के माध्यम से सेवा के लिए हमारी सभी संकलित संपत्तियों को एस 3 बाल्टी में सिंक्रनाइज़ करने के लिए एसेट सिंक का उपयोग करके हल किया। AssetSync चलाने के बाद, हमारे पास एक हुक है जो स्लग आकार को कम करने के लिए सभी प्रीकंपील्ड संपत्तियों को हटा देता है। असल में, स्लग संकलन के दौरान कार्यप्रवाह इस तरह देखा:

  1. संपत्ति
  2. AssetSync S3 के लिए सभी संकलित संपत्ति सिंक करता है
  3. संकलित संपत्ति की सभी स्थानीय प्रतियां

नष्ट हो जाती हैं precompile Heroku चलो लिंक्ड आलेख कुछ बिंदुओं पर तर्क देता है कि यह क्यों बुरा है और इसके बजाय क्या उपयोग करना है।

संपत्ति सिंक का उपयोग विफलताओं का कारण बन सकता है। डीबग करना मुश्किल है, अनावश्यक है, और अतिरिक्त जटिलता जोड़ता है। इसका इस्तेमाल न करें। इसके बजाय, सीडीएन का उपयोग करें।

[...]

अब आपको इसके बजाय सीडीएन का उपयोग करना चाहिए। आपकी संपत्तियों को प्रीकंपिल्ड होने के बाद S3 पर कॉपी करने के बजाय, सीडीएन उन्हें आपकी वेबसाइट से पकड़ लेता है। यहां कुछ कारण दिए गए हैं कि यह बेहतर क्यों है।

प्रामाणिक संपत्तियों

[...] यह आप एकल, आधिकारिक स्थानों पर जहां आप स्टोर जानकारी के लिए अनुमति देता है। यदि आपको उस जानकारी को बदलने की आवश्यकता है, तो आप केवल को इसे एक ही स्थान पर बदलने की आवश्यकता है। [...] क्या होता है यदि किसी के पास संपत्तियों के समन्वय के बाद तैनाती में विफल रहा है? क्या होगा यदि कोई S3 बाल्टी में फ़ाइल को संशोधित करता है? संपत्तियों की एक प्रति को ठीक करने के बजाय, अब आपको दो ठीक करना होगा।

तैनात नियतिवाद

आप Heroku रन बैश के साथ एक dyno के अंदर डिबगिंग रहे हैं और आप रेक संपत्ति चलाते हैं: precompile यह सिर्फ अपने स्थानीय प्रतिलिपि संशोधित नहीं करता है। यह वास्तव में एस 3 पर भी प्रतिलिपि को संशोधित करता है। [...] का सिंक हिस्सा नेटवर्क में गड़बड़ होने पर भी परिसंपत्ति_सिंक विफल हो सकता है। क्या होगा अगर आप केवल एक फ़ाइल का हिस्सा लिखते हैं, या आपकी संपत्ति का केवल आधा सिंक हो जाता है? ये बातें होती हैं।

हालांकि मैं उनके बिंदुओं से सहमत हूं, सवाल यह है कि: एक हेरोकू एप्लिकेशन को तैनात करने का अनुशंसित तरीका क्या होता है जब स्लग में प्रीकंपील्ड संपत्तियां संग्रहीत होती हैं?

+0

क्या आपने यहां कुछ पता लगाया है? – hso

उत्तर

-1

सवाल यह है कि कौन सी संपत्ति फाइलें स्लग विशाल कर रही हैं?

डिफ़ॉल्ट रूप से, रेल संपत्तियों की पाइपलाइन का उपयोग केवल छोटी और सीमित आंतरिक संपत्तियों (जैसे जेएस, सीएसएस, कुछ लोगो, आदि) के लिए किया जाना चाहिए।

पाइपलाइन को छोड़कर कई कारणों से रेल संपत्तियों के रूप में बड़ी मात्रा में बाहरी या बड़ी फ़ाइलों को स्टोर करना एक अच्छा विचार नहीं है (जैसे यह आपकी गिट निर्देशिका को आकार में बड़ा बना रहा है)।

+0

यह प्रश्न का उत्तर नहीं देता है, और यह भी गलत है। – sevenseacat