2012-03-17 11 views
9

मैंने खुद को assets:precompile कार्य के अजीब व्यवहार के सामने पाया, या कम से कम किसी चीज़ के सामने जो मैं पूरी तरह से समझ नहीं पा रहा हूं।रेल संपत्तियां: अजीब व्यवहार precompile

तो, मैं अपने वेब एप्लिकेशन के लिए रेल 3.1.3, स्पॉकेट 2.0.3, कम 2.0.11 का उपयोग कर रहा हूं, साथ ही मैं लेआउट के लिए बूटस्ट्रैप पर भरोसा करता हूं, इसलिए मैं भी कम रेल 2.1.8 और कम का उपयोग कर रहा हूं -रेल्स-बूटस्ट्रैप 2.0.8। मैंने शैली को अनुकूलित किया है जैसे कि वे here कहते हैं।

मेरी संपत्ति का विन्यास है:

stylesheets 
|--application.css.scss 
|--custom-style/ 
    |--variables.less 
    |--mixins.less 
    |--buttons.less 
|--custom-style.css.less 

application.css.scss में मैं

//=require custom-style 

और कस्टम शैली में क्या मैं buttons.less में

@import "twitter/bootstrap/reset"; 
//@import "twitter/bootstrap/variables"; // Modify this for custom colors, font-sizes, etc 
@import "custom-style/variables"; 
//@import "twitter/bootstrap/mixins"; 
@import "custom-style/mixins"; 
// And all the other standar twitter/bootstrap imports... 

// Other custom-style files to import 
@import "custom-style/buttons" 
//... 

// And other rules here 
//... 

अंत करना मैं variables.less और mixins.less बी में परिभाषित कुछ चर और मिश्रण का उपयोग करता हूं ootstrap फ़ाइलें, @white और .buttonBackground अधिक निर्दिष्ट होने के लिए।

अगर मैं ऊपर विन्यास के साथ bundle exec rake assets:precompile लॉन्च करते हैं, कार्य विफल रहता है और मैं इस त्रुटि मिलती है:

$ bundle exec rake assets:precompile 
/usr/local/rvm/rubies/ruby-1.9.3-p0/bin/ruby /usr/local/rvm/gems/ruby-1.9.3-p0/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets 
rake aborted! 
.buttonBackground is undefined 

लेकिन वह इस करता है, तो मैं क्या बदल जाता

buttons.less --> buttons.css.less 

@import "buttons" --> @import "buttons.css.less" 

सब कुछ ठीक काम करता है !!

क्या यह नेस्टेड आयात के साथ काम करते समय कम चर और कार्यों के दायरे से संबंधित कुछ है? या कम पार्सर, या स्प्राकेट्स के आदेश के साथ क्या करना है, आयात पेड़ को संसाधित करता है?

क्या मुझे कुछ गलत याद आ रहा है या गलत तरीके से कुछ कर रहा हूं?

धन्यवाद :)

नोट: मैं भी मूल चर और mixins फाइलों के साथ त्रुटि मिलती है, तो यह ओवरराइड उन्हें में किया के साथ जुड़ा हुआ नहीं है।

+2

"मैंने खुद को संपत्ति के अजीब व्यवहार के सामने पाया: प्रीकंपाइल कार्य" - हम सभी नहीं हैं :) यह मुझे भी मारता है कि application.css.scss और आपकी .less फ़ाइलों को मिलाकर एक हो सकता है मुद्दा। मैं या तो/या कम/SASS कोशिश करता हूं और शायद सास आपके @import निर्देशों को पहचान नहीं रहा है। यह जरूरी नहीं है, इसलिए application.css.scss -> application.css बदलें, जेमफाइल से सैस-रेल को हटा दें, और देखें कि यह मदद करता है या नहीं। शुभकामनाएँ :) – sbeam

उत्तर

0

क्या आपने फ़ाइल को buttons.css.less पर नाम बदलने का प्रयास किया है, लेकिन @import (i.e., @import "buttons") से एक्सटेंशन को रखने का प्रयास किया है?

इस तरह मैं एससीएसएस के साथ ऐसा करता हूं और यह ठीक काम करता है।

एक और विचार //=require custom-style को 0.cनिर्देश के साथ application.css.less में प्रतिस्थापित करना है।

If you want to use multiple Sass files, you should generally use the Sass @import rule instead of these Sprockets directives. Using Sprockets directives all Sass files exist within their own scope, making variables or mixins only available within the document they were defined in.

+0

'@import" बटन "' काम नहीं करता है, ऐसा इसलिए है क्योंकि कम दुभाषिया '.less' फ़ाइल की तलाश करता है, न कि' .css.less' – mokagio

+0

के लिए, क्या आप कृपया मुझे ** कहीं भी लिंक कर सकते हैं * *? जहां तक ​​मुझे पता है कि '// = आवश्यकता' है, आपको स्प्राकेट्स के साथ कैसे बात करनी चाहिए ... – mokagio

+0

यहां: http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and- डायरेक्टिव्स - पीले बॉक्स के नीचे थोड़ा, मैं इसे जवाब में चिपकाऊंगा। –

1

मैं दो संभावनाओं में से एक की अभी सोच सकते हैं:

1) आप Rails Guide here@import का उपयोग कर (जो एससीएसएस/कम से संसाधित किया जाता है) //=require अधिक कर रहे हैं (जो Sprockets के साथ कार्रवाई की है) की अनुशंसा करती application.css.scss को application.css में बदलना चाहिए।कम और उपयोग:

@import "custom-style";

sprockets //= require ...

2) कम संकलक अपने अर्धविराम के बारे में बहुत नकचढ़ा है के बजाय

। मैंने देखा है कि आपके पास @import "custom-style/buttons" है - यह @import "custom-style/buttons";

डुनो अगर समस्या वास्तव में सरल है, लेकिन यह एक शुरुआत है।

0

यह वास्तव में आपके प्रश्न का उत्तर नहीं देता है, लेकिन एकमात्र कारण है कि आप सास मिश्रण कर रहे हैं और ट्विटर बूटस्ट्रैप का उपयोग करने के लिए कम हैं? यदि आप केवल सैस का उपयोग करना पसंद करते हैं, तो कुछ बूटस्ट्रैप रत्न हैं जहां लेखक कम से कम स्कैस को परिवर्तित करते हैं, जैसे bootstrap-sass। एक परियोजना में दोनों को उलझाने की कोशिश करने से पहले, मैं पूरी तरह से एक या दूसरे में खरीदना चाहता था, लेकिन यह मेरी राय है।

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

  • कोई संबंधित समस्या नहीं^_^