5

पृष्ठभूमिमैं रेल एसेट_टैग यूआरएल के प्रारूप को कैसे बदलूं?

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

समस्या

अमेज़न CloudFront चला जाता है और क्वेरी स्ट्रिंग पैरामीटर पर ध्यान नहीं देता जब निर्धारित करता है कि यह यह यह मूल है से संपत्ति को फिर से डाउनलोड करने के लिए खुद का कैश है खराब चाहिए। यह स्पष्ट रूप से RAILS_ASSET_ID के साथ यूआरएल उत्पन्न करने के तरीके के साथ एक समस्या उत्पन्न करता है जो करना है: /assets/path/to/asset.ext?RAILS_ASSET_ID। डिफ़ॉल्ट संपत्ति URL के साथ क्लाउडफ्रंट 24 घंटों तक पुरानी संपत्तियों पर रखेगा।

समाधान?

मैं जो करने की उम्मीद कर रहा हूं वह रेलवे 3 एसेट टैग उत्पन्न करने के तरीके को ओवरराइड करता है ताकि मैं /assets/RAILS_ASSET_ID/path/to/asset.ext जैसे यूआरएल उत्पन्न कर सकूं। मेरे पास पहले से ही उन सर्वरों पर वेब सर्वर का जवाब देने का समाधान है, मुझे बस यह पता लगाने की आवश्यकता है कि रेल कैसे यूआरएल उत्पन्न करते हैं।

नोट्स

  1. मेरे RAILS_ASSET_ID मेरा नवीनतम Git की एक उप-स्ट्रिंग हैश प्रतिबद्ध हो जाएगा। इसे तैनाती प्रक्रिया के दौरान कैपिस्ट्रानो द्वारा स्थापित किया जाएगा। मैं प्रत्येक तैनाती पर सभी संपत्ति कैश पर्दाफाश के साथ ठीक हूँ, मैं संपत्ति-विशिष्ट आईडी की जरूरत नहीं है
  2. मैं पहले से ही ActionView::Helpers::AssetTagHelper.rewrite_asset_path ओवरराइड करने के लिए प्रयास किया है, लेकिन यह काम करते हैं और से करने के लिए मैं क्या पढ़ा यह एक निजी है नहीं मालूम था जिस विधि पर भरोसा नहीं किया जाना चाहिए।
  3. अग्रिम धन्यवाद!

उत्तर

4

"एक प्रक्रिया में ActionController::Base.config.asset_path सेट करें जो असम्बद्ध संपत्ति पथ लेता है और आपके एसेट कैशिंग के लिए आवश्यक पथ लौटाता है।"

यह AssetTagHelper दस्तावेज़ीकरण से है।

+0

मुझे पूरा यकीन नहीं है कि मैं इसे कैसे चूक गया लेकिन इसे ASAP का परीक्षण करूंगा। –

+0

मैंने पुष्टि की है कि यह समाधान है, मुझे यह स्पष्ट करने के लिए धन्यवाद कि मैं किसी भी तरह से चूक गया हूं। –

1

asset_id plugin आपकी समस्या का समाधान करना चाहिए। यह अमेज़ॅन एस 3 और क्लाउडफ्रंट का समर्थन करता है।

+0

ऐसा प्रतीत होता है कि इस प्लगइन की आवश्यकता है कि आप क्लाउडफ्रंट के मूल के रूप में अमेज़ॅन एस 3 का उपयोग कर रहे हैं जो मैं नहीं करूँगा क्योंकि कुछ संपत्ति गतिशील रूप से जेनरेट की जाती हैं। धन्यवाद हालांकि, यह एक साफ प्लगइन है जो एक अलग परियोजना में उपयोगी हो सकता है। –

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