Em desenvolvimento, todos os meus recursos de javascript estão sendo adicionados com o body=1
obter variável. O que isso está realmente fazendo?
http://localhost:3000/assets/application.js?body=1
Respostas:
32 para resposta № 1Percorrendo o código-fonte da roda dentada, 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?
é definido quando ?body=1 or true
Para um ativo estático, Asset.body
é definido como:
def body
# File is read everytime to avoid memory bloat of large binary files
pathname.open("rb") { |f| f.read }
end
Considerando que passar o ativo de volta a si mesmo é um "objeto de corpo capaz de Rack"
# Add enumerator to allow `Asset` instances to be used as Rack
# compatible body objects.
def each
yield to_s
end
Quando olhamos para o bundled_asset
, a Asset.body
é redefinido como recuperar apenas o corpo do recurso e não incluir nenhuma dependência. Asset.to_a
é definido como recuperar o próprio ativo, bem como todas as suas dependências como um array passado para o Rack.
Dessa forma, os ativos não são combinados, mas tomados como objetos individuais, portanto, os arquivos CSS individuais ainda são individuais.