6

मैं जारी किया रेल 3.1.0 के साथ काम करने के लिए इस कोड को अद्यतन करने के कोशिश कर रहा हूँ:जब संपत्ति, Sprockets/रेल संपत्ति पाइपलाइन precompiling को अस्थायी रूप से उत्पादन पथ को बदलने के लिए, 3.1.0

# temporarily set the static assets location from public/assets to our spec directory 
    ::Rails.application.assets.static_root = Rails.root.join("spec/javascripts/generated/assets") 

    ::Rake.application['assets:clean'].invoke 
    ::Rake.application['assets:precompile'].invoke 

अब जब कि Sprockets :: पर्यावरण # static_root हटा दिया गया है, अस्थायी रूप से sprockets आउटपुट निर्देशिका को बदलने का सबसे अच्छा तरीका क्या है?

संपादित करें: इसके अलावा मैं अपने कस्टम उत्पादन निर्देशिका :)

उत्तर

1

आप config.assets.prefix उपयोग कर सकते हैं में संपत्ति साफ करने में सक्षम होना चाहते हैं, लेकिन यह अभी भी सार्वजनिक निर्देशिका (के लिए here देखने में संपत्ति डाल देंगे रेक कार्य, जो public_path और उपसर्ग में शामिल होता है)।

आपके मामले में, यह काम करना चाहिए:

Rails.application.config.assets.prefix = "../spec/javascripts/generated/assets" 
Rails.application.config.assets.manifest = File.join(Rails.public_path, config.assets.prefix) 

मैं sprockets railtie की अजीब लोड आदेश की वजह से प्रकट पथ निर्दिष्ट किया था। ऐसा करने के बिना, यह public/assets पर फंस जाता है, जो अस्तित्व में नहीं है और रेक कार्य को उड़ाता है। YMMV।

साइड नोट: मैंने इसे पहले विकास वातावरण में आजमाया, लेकिन config.assets.prefix ने बदलने से इंकार कर दिया। मुझे संदेह है कि config.assets.enabledtrue को यह तय कर दिया होगा, लेकिन मुझे अभी तक इसका परीक्षण करने के लिए चारों ओर नहीं मिला है।

एक बोनस के रूप में, assets:clean इस समाधान (आप अपने आप को in the rake task के लिए इसे देख सकते हैं) के साथ पूरी तरह से काम करता है

+0

मैं वास्तव में सवाल जो मुझे रेल स्रोत में एक डुबकी लेने के लिए एकदम सही बहाना दे इस तरह का प्यार: -) –

+0

धन्यवाद बेनोइट, यह काम किया! –

+0

रेल में काम नहीं कर रहा है 4 –

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