2011-11-07 38 views
14

वहाँ रेल पेशेवरों के लिए त्वरित सवाल के साथ उपयोग livereload ...रेल: संपत्ति पाइपलाइन

जब रेल 3.0.x क्षुधा के साथ काम कर रहा गार्ड और LiveReload का एक भारी उपयोगकर्ता था। हालांकि, ऐसा लगता है कि रेल 3.1 में संपत्ति पाइपलाइन का उपयोग करते समय लाइवरेलोड गार्ड को पता नहीं है कि एक सैस फ़ाइल में परिवर्तन ब्राउज़र पर नए सीएसएस भेजने को ट्रिगर करना चाहिए।

क्या कोई भी व्यक्ति पाइपलाइन के साथ लाइवरलोड का उपयोग कर रहा है? यदि हां, तो आप इसे कैसे काम कर रहे हैं?

धन्यवाद!

1) सुनिश्चित करें कि सभी एससीएसएस फ़ाइलों तो की तरह, नई संपत्ति सम्मेलन नाम दिया गया हो बनाओ::

उत्तर

21

Github पर कुछ मुद्दे धागे पालन करने के बाद मैं निम्नलिखित तय मेरी समस्या पाया filename.css.scss

मैं एससीएसएस उपयोग कर रहा था रेल 3.1 से पहले और मैंने अपनी सभी एसएएस फाइलों का नाम दिया था filename.scss

2) अपने guardfile में livereload के लिए निम्नलिखित का उपयोग करें:

guard :livereload do 
    watch(%r{^app/.+\.(erb|haml|js|css|scss|sass|coffee|eco|png|gif|jpg)}) 
    watch(%r{^app/helpers/.+\.rb}) 
    watch(%r{^public/.+\.html}) 
    watch(%r{^config/locales/.+\.yml}) 
end 

यह है कि जब उत्पन्न डिफ़ॉल्ट कोड नहीं है:

guard 'livereload' do 
    watch(%r{app/helpers/.+\.rb}) 
    watch(%r{app/views/.+\.(erb|haml)}) 
    watch(%r{(public/).+\.(css|js|html)}) 
    watch(%r{app/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{app/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{lib/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{lib/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{vendor/assets/stylesheets/(.+\.css).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{vendor/assets/javascripts/(.+\.js).*$}) { |m| "assets/#{m[1]}" } 
    watch(%r{config/locales/.+\.yml}) 
end 
+0

अच्छा, मैं lib फ़ोल्डर के बारे में भूल गया था। क्या आप वहां विक्रेता विक्रेता को फेंकने की भी परेशानी करेंगे? – stephenmurdoch

+1

निश्चित रूप से, विक्रेता निर्देशिका जोड़ा गया। – Andrew

+0

सुनिश्चित करें कि आपके जेमफ़ाइल में गार्ड-लाइवरेलोड मणि है। – FearMediocrity

6

मैं भी बहुत अच्छी तरह से काम करने के लिए निम्नलिखित पाया है आप guard init livereload को किसी कारण से चलाते हैं जो सैस आयात के साथ इतना अच्छा काम नहीं करता है।

+1

हाँ यदि आप SASS का सही उपयोग कर रहे हैं तो आप नहीं चाहते हैं कि आपके आंशिक रूप से सीएसएस में संकलित हो जाएं ताकि आप उन्हें * .css.scss नाम न दे सकें। –

+0

मैंने इस बिंदु के स्पष्टीकरण के लिए इस संबंधित प्रश्न को पोस्ट किया: http://stackoverflow.com/questions/12334515/naming-imported-scss-files-scss-or-css-scss। इसलिए यदि आपके पास _file.scss नाम की फ़ाइल है और इसका उपयोग @import "फ़ाइल" में किया जाता है, तो लाइवरेलोड के लिए यह रणनीति सही है और इन फ़ाइलों का नाम बदलकर _file.css.scss नहीं किया जाना चाहिए। – justingordon

+0

हां! इससे मुझे किसी अन्य उदाहरण से ज्यादा मदद मिली। मैं एक एससीएसएस के साथ संयुक्त संपत्ति पाइपलाइन का उपयोग कर प्रणाली शामिल कर रहा हूँ। आपने उदाहरण के लिए "बॉक्स से बाहर" काम किया। – BradGreens

1

जैसा कि @mirko ने अपनी टिप्पणी में उल्लेख किया है, एसएसएस फाइलों पर अतिरिक्त। सीएसएस को बहिष्कृत किया गया है। तो यह जोड़ना एक अच्छा समाधान नहीं है, और मैंने अनुभव किया है कि बस एसएसएस एक्सटेंशन को एक पेज रीलोड को जोड़ता है।

तो मैंने पाया कि यह काम करता है:

watch(%r{(app|vendor)(/assets/\w+/(.+)\.(scss))}) { |m| "/assets/#{m[3]}.css" }` 

मेरे समझ इस नक्शे संकलित सीएसएस फ़ाइल के लिए एससीएसएस फ़ाइल है। मुझे उम्मीद है कि यह सैस के लिए भी काम करता है।

Source: Github Issue

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