# 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 определяется как извлечение актива как его самого, так и всех его зависимостей в качестве массива, переданного в Rack.
Таким образом, активы не объединены вместе, а взяты как отдельные объекты, поэтому отдельные файлы CSS остаются индивидуальными.