2011-10-04 20 views
8

मुझे उत्पादन मोड में काम करने के लिए रेल 3.1 संपत्ति पाइपलाइन प्रीकंपिलेशन नहीं मिल सकता है। यह हमेशा की तरह एक त्रुटि के साथ एससीएसएस भीतर संदर्भित छवियां पर विफल रहता है:रेल पर रूबी 3.1 संपत्तियां: प्रीकंपाइल और छवियां

$ bundle exec rake assets:precompile RAILS_ENV=production 
    rake aborted! 
    rails.png isn't precompiled 
    (in /home/florian/AssetTest/app/assets/stylesheets/application.css.scss) 

लेकिन जब मैं सार्वजनिक/संपत्ति निर्देशिका में देखने के लिए, छवि होती है, तो यह precompiled है:

$ ls public/assets | grep rails 
    rails-dd352fc2630e5f9aa5685ef1d7fe5997.png 

एससीएसएस

/* 
* This is a manifest file that'll automatically include all the stylesheets available in this directory 
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 
* the top of the compiled file, but it's generally better to create a new file per style scope. 
*= require_self 
*= require_tree . 
*/ 

body { 
    background: #ffffff image-url('rails.png') no-repeat 0 center; 
} 

मैं एससीएसएस में छवि यूआरएल सहायक, लेकिन सिर्फ यूआरएल ('/ आस्तियों/rails.png') का उपयोग नहीं करते हैं, तो precompilation ठीक काम करता है, और इस मामले में फ़ाइल बस कुछ परीक्षण कोड शामिल एक manifest.yml फ़ाइल जी है सार्वजनिक/संपत्ति में उत्साहित।

दिलचस्प बात यह है कि: यदि मैं एससीएसएस को छवि-यूआरएल ('rails.png') में वापस बदलता हूं और एक और प्रीकंपिलेशन चलाता हूं, तो यह अभी भी काम करता है (मुझे लगता है क्योंकि छवि अब पहले से ही मैनिफेस्ट फ़ाइल में सूचीबद्ध है)।

क्या मैं गलत यहाँ कर रहा हूँ? मैं वास्तव में सहायक विधियों को नजरअंदाज नहीं करना चाहता हूं (जैसा कि उनका उपयोग करना आपको यह करना चाहिए, है ना?), और मैं निश्चित रूप से मैनिफेस्ट फ़ाइल को मैन्युअल रूप से नहीं बनाना चाहता ...

उत्तर

5

मेरे पास है खुद को एक ही समस्या में चलाओ। जाहिरा तौर पर रेल 3.1.0 में एक बग

किसी भी घटना में है, और उम्मीद है कि छोटे क्रम में तय हो जाएगा ..., production.rb में, तो आप इस कोशिश कर सकते हैं:

config.assets.compile = true 

आप संभावना यह निर्धारित किया है false पर, जो होना चाहिए। हालांकि, यह false पर सेट होने पर समस्याएं उत्पन्न होती हैं जब आप एससीएसएस में संपत्ति सहायताकर्ताओं का उपयोग करते हैं, जैसा कि आप करने का प्रयास कर रहे हैं। उस मान को true पर सेट करना उन सहायकों का उपयोग करते समय संकलन को ठीक से अनुमति देता है।

कुछ विवरणों के लिए this issue on github पर एक नज़र डालें।

+1

बस जिथब मुद्दे में सुझाए गए अनुसार रेल 3.1.1rc1 को अपडेट किया गया है, और यह काम करता है :-) – fwalch

+2

यह उत्तर इस कारण से बुरा लगता है: http://stackoverflow.com/questions/8821864/config-assets-compile- सच में रेल उत्पादन-क्यों-नहीं – Ringo

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