2013-09-04 5 views
5

रेल में this commit के बाद, यह सुझाव दिया जाता है कि तृतीय पक्ष संपत्तियों को app/assets फ़ोल्डर या config.precompile में ऐसी सभी संपत्तियों को सूचीबद्ध करना चाहिए।रेल 4 - विक्रेता संपत्ति कहां जाती है?

कि धागा

उदाहरण के लिए पर एक उपयोग के मामले का हवाला देते हुए, अगर मैं जो भी सीएसएस, एक फ़ॉन्ट चेहरा, और एक छवि स्प्राइट है एक jQuery प्लगइन विक्रेता के लिए की जरूरत है, मैं .js जोड़ेंगे और .css से विक्रेता/संपत्ति/जावास्क्रिप्ट और विक्रेता/संपत्ति/स्टाइलशीट्स। मैं विक्रेताओं/संपत्ति/छवियों में क्रमशः sprites और फोंट विक्रेता और विक्रेता/संपत्ति/फोंट विक्रेता होगा। पूरे विक्रेता/संपत्तियों को जोड़ना पथ ओवरकिल लगता है, लेकिन मैन्युअल रूप से प्रत्येक संपत्ति को मैन्युअल रूप से निर्दिष्ट करना थकाऊ लगता है (हालांकि यह डिज़ाइन द्वारा हो सकता है)। app/assets अंदर

जोड़ना तीसरे पक्ष की संपत्ति एक वैश्विक संपत्ति फ़ोल्डर की समस्या की तरह एक रेल 2 को बढ़ावा मिलेगा।

क्या मुझे कुछ याद आ रही है? रेलवे तीसरे पक्ष की संपत्तियों का आयोजन करने का 4 तरीका क्या है।

उत्तर

1

तृतीय पक्षों को स्पष्ट रूप से हाथ से शामिल किया जाना चाहिए। ऐसा इसलिए है क्योंकि इन पुस्तकालयों में स्रोत कोड, रीडेमे फाइल आदि जैसे कई वैकल्पिक भाग हैं। यदि आपको छवियों या फोंट जैसी अन्य चीजों की आवश्यकता है तो आप इन फ़ाइलों को सार्वजनिक फ़ोल्डर में जोड़ सकते हैं या ऐसा कर सकते हैं:

config/application.rb

config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif, 
"fontawesome-webfont.ttf", 
"fontawesome-webfont.eot", 
"fontawesome-webfont.svg", 
"fontawesome-webfont.woff") 

config.assets.precompile << Proc.new do |path| 
    if path =~ /\.(css|js)\z/ 
    full_path = Rails.application.assets.resolve(path).to_path 
    app_assets_path = Rails.root.join('app', 'assets').to_path 
    if full_path.starts_with? app_assets_path 
     puts "including asset: " + full_path 
     true 
    else 
     puts "excluding asset: " + full_path 
     false 
    end 
    else 
    false 
    end 
end 

पर्यावरण/production.rb

config.serve_static_assets = true 

फिर bundle exec rake assets:precompile RAILS_ENV=production चलाते हैं।

+0

आमतौर पर, जब आप कोई तृतीय पक्ष जेएस lib जोड़ते हैं तो आप केवल 'रिलीज'/'dist'version/फ़ोल्डर जोड़ते हैं, है ना? आप किसी भी तरह के स्रोत कोड की प्रतिलिपि नहीं बनाना चाहते हैं। और precompilation केवल जेएस, सीएसएस उठाता है। –

+0

सच है। लेकिन लीग और विक्रेता में रेल 4 संपत्तियों (सीएसएस, एक फ़ॉन्ट चेहरे, और एक छवि स्प्राइट, आदि) में डिफ़ॉल्ट रूप से precompiled नहीं हैं। – hawk

+0

अवांछित फ़ाइलों को प्रीकंपिल्ड होने से बचने के लिए आपको इस संपत्ति को अपने ऐप/परिसंपत्तियों में रखना चाहिए। – hawk

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