/ / क्या करता है? शरीर = 1 रेल में 3.1 संपत्ति पाइपलाइन करते हैं? - रूबी-ऑन-रेल-3.1, संपत्ति-पाइपलाइन

क्या करता है? शरीर = 1 रेल में 3.1 संपत्ति पाइपलाइन करते हैं? - रूबी-ऑन-रेल-3.1, संपत्ति-पाइपलाइन

विकास में, मेरी सभी जावास्क्रिप्ट संपत्तियों के साथ जोड़ा जा रहा है 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 रैक पर पारित सरणी के रूप में संपत्ति को अपने स्वयं के साथ ही अपनी सभी निर्भरताओं को पुनर्प्राप्त करने के रूप में परिभाषित किया गया है।

इस तरह, संपत्तियों को एक साथ जोड़ा नहीं जाता है लेकिन व्यक्तिगत वस्तुओं के रूप में लिया जाता है, इसलिए अलग-अलग सीएसएस फाइलें अभी भी व्यक्तिगत हैं।