विकास में, मेरी सभी जावास्क्रिप्ट संपत्तियों के साथ जोड़ा जा रहा है body=1
चर प्राप्त करें। यह वास्तव में क्या कर रहा है?
http://localhost:3000/assets/application.js?body=1
उत्तर:
जवाब के लिए 32 № 1स्पॉकेट स्रोत कोड के माध्यम से ट्रैवलिंग हम पाते हैं:
# Returns a 200 OK response tuple
def ok_response(asset, env)
if body_only?(env)
[ 200, headers(env, asset, Rack::Utils.bytesize(asset.body)), [asset.body] ]
else
[ 200, headers(env, asset, asset.length), asset ]
end
end
body_only?
कब सेट है ?body=1 or true
एक स्थिर संपत्ति के लिए, Asset.body
की तरह परिभाषित किया गया है:
def body
# File is read everytime to avoid memory bloat of large binary files
pathname.open("rb") { |f| f.read }
end
जबकि संपत्ति को वापस पास करना स्वयं स्वयं "रैक-सक्षम शरीर वस्तु" है
# Add enumerator to allow `Asset` instances to be used as Rack
# compatible body objects.
def each
yield to_s
end
जब हम देखते हैं bundled_asset
, द Asset.body
केवल संपत्ति के शरीर को पुनः प्राप्त करने के रूप में परिभाषित किया गया है और किसी भी निर्भरता सहित नहीं। Asset.to_a
रैक पर पारित सरणी के रूप में संपत्ति को अपने स्वयं के साथ ही अपनी सभी निर्भरताओं को पुनर्प्राप्त करने के रूप में परिभाषित किया गया है।
इस तरह, संपत्तियों को एक साथ जोड़ा नहीं जाता है लेकिन व्यक्तिगत वस्तुओं के रूप में लिया जाता है, इसलिए अलग-अलग सीएसएस फाइलें अभी भी व्यक्तिगत हैं।