Dans le cadre du développement, toutes mes ressources javascript sont ajoutées à l'aide de la balise body=1
obtenir la variable. Que fait-elle en réalité ?
http://localhost:3000/assets/application.js?body=1
Dans le cadre du développement, toutes mes ressources javascript sont ajoutées à l'aide de la balise body=1
obtenir la variable. Que fait-elle en réalité ?
http://localhost:3000/assets/application.js?body=1
En parcourant le code source de Sprocket, nous trouvons :
# 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?
est réglé lorsque ?body=1 or true
Pour un actif statique, Asset.body
est défini comme suit :
def body
# File is read everytime to avoid memory bloat of large binary files
pathname.open('rb') { |f| f.read }
end
Tandis que le fait de rendre l'actif lui-même est un "objet de corps capable de Rack".
# Add enumerator to allow `Asset` instances to be used as Rack
# compatible body objects.
def each
yield to_s
end
Quand on regarde le bundled_asset
le Asset.body
est redéfini comme récupérant le corps de la ressource uniquement et n'incluant pas les dépendances. Asset.to_a
est défini comme la récupération de la ressource elle-même ainsi que de toutes ses dépendances sous forme de tableau transmis à Rack.
De cette façon, les actifs ne sont pas combinés ensemble mais considérés comme des objets individuels, de sorte que les fichiers CSS individuels restent individuels.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.