2011-09-28 12 views

Respuesta

32

pesca de arrastre a través del código fuente Piñón encontramos:

# 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? se establece cuando ?body=1 or true

Para un activo estática, Asset.body se define como:

def body 
    # File is read everytime to avoid memory bloat of large binary files 
    pathname.open('rb') { |f| f.read } 
end 

Mientras pasando el activo a su auto es un "objeto cuerpo en bastidor capaz"

# Add enumerator to allow `Asset` instances to be used as Rack 
# compatible body objects. 
def each 
    yield to_s 
end 

Cuando nos fijamos en el bundled_asset, la Asset.body se redefine como recuperar el cuerpo del activo solamente y no incluye ninguna dependencia. Asset.to_a se define como recuperar el activo en sí mismo y todas sus dependencias como una matriz transferida a Rack.

De esta manera, los activos no se combinan entre sí sino que se toman como objetos individuales, por lo que los archivos CSS individuales siguen siendo individuales.

Cuestiones relacionadas