2009-11-22 21 views
13

मैं रेल की नौसिखिया हूं, मैं यह जानने की कोशिश कर रहा हूं कि उसके हैंटोकू पर स्टाइलशीट_लिंक_टैग के साथ क्या चल रहा है।हरोकू पर रेल ऐप सभी.css के माध्यम से और व्यक्तिगत रूप से अलग-अलग फ़ाइलों के माध्यम से संपत्तियों की सेवा करता है

अगर मैं

= stylesheet_link_tag "style", :cache => true 

Heroku "all.css" का उपयोग करता है और स्टाइलशीट लेने नहीं करता है, लेकिन अगर मैं

= stylesheet_link_tag "style", :cache => false 

का उपयोग यह स्टाइलशीट इसके नाम "शैली का उपयोग में कार्य करता है का उपयोग करें। सीएसएस "। क्यूं कर?

उत्तर

17

यह आपके स्टाइलशीट लिंक टैग पर कॉल करने का परिणाम है: cache =>।

: कैश => सत्य प्रदान की गई सभी स्टाइलशीट लेता है और उन्हें सभी.css नामक एक फ़ाइल में जोड़ता है।

कारण यह है कि आप इसे केवल अपने हेरोकू परिनियोजन पर देख रहे हैं क्योंकि यह केवल उत्पादन मोड में चल रहा है जब यह समेकित all.css को कॉल करता है।

इसलिए उदाहरण के लिए मान लीजिए कि मैं तीन स्टाइलशीट है और मैं उन्हें अपने शीर्षक में शामिल कर सकते हैं:

= stylesheet_link_tag "application", "jquery-ui", "style", :cache => true 

जब विकास में, इस application.css, jQuery-ui.css, और style.css शामिल होंगे (उस क्रम में)।

उत्पादन में, यह तीन फाइलों (प्रदान किए गए क्रम में) से सभी सीएसएस को "all.css" नामक एक फ़ाइल में जोड़ देगा, जो एकमात्र सीएसएस फ़ाइल शामिल होगी।

लाभ उत्पादन में कम HTTP अनुरोध कर रहा है और आदर्श रूप से आपके शामिल सीएसएस के लिए एक छोटा फ़ाइल आकार है, जो उम्मीद है कि पृष्ठ लोड को तेज करना चाहिए।

संपादित करें जैसा कि कैस्पर टिप्पणियों में बताता है, हेरोोकू में केवल-पढ़ने वाली फाइल सिस्टम है। आप हेरोोक-विशिष्ट समाधान के लिए Heroku Asset Packager पर देखना चाह सकते हैं।

+1

जवाब के लिए धन्यवाद (config.serve_static_assets = production.rb को सच जोड़ने), किसी भी विचार क्यों Heroku पिक स्टाइलशीट सही ढंग से जब कैश सही पर सेट है नहीं हो सकता है? –

+4

हेरोकू केवल पढ़ने के लिए तैनाती पर्यावरण है। इसके कारण, रेल सभी.css को/public/स्टाइलशीट/में लिख नहीं सकते हैं और चुपचाप विफल हो जाते हैं। जब तक आप cache => true का उपयोग करते हैं तब तक styleheet_link_tag all.css से लिंक होता है, इसलिए त्वरित फिक्स हेरोकू पर स्टाइलशीट को कैश नहीं करना है। यहां और पढ़ें: http://docs.heroku.com/constraints#read-only-filesystem –

+0

धन्यवाद कैस्पर और ब्रायन –

0

सेटिंग: cache => सच मेरे अनुरोधों को पूरी तरह विफल होने का कारण बनता है।

अल्पावधि के लिए मेरे समाधान मेरी config/वातावरण/prodcution.rb

config.serve_static_assets = true 

के लिए निम्न जोड़ने के लिए मैं थोड़ा प्रदर्शन CloudFlare के पीछे होने के बारे में कम चिंतित हूँ है। मेरे सीएसएस और जेएस फाइलों को सम्मिलित करने का एक तरीका ढूंढना मेरी टू-डू सूची पर है।

1

इस परीक्षण किया गया और यह मेरे लिए काम नहीं किया