gpt4 book ai didi

ruby-on-rails-3.1 - ?body = 1在rails 3.1 Assets 管道中做什么?

转载 作者:行者123 更新时间:2023-12-03 08:49:19 25 4
gpt4 key购买 nike

在开发中,我所有的JavaScript资源都附加了body=1 get变量。这到底在做什么?

http://localhost:3000/assets/application.js?body=1

最佳答案

浏览Sprocket源代码,我们发现:

  # 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
对于静态 Assets , Asset.body定义为:
def body
# File is read everytime to avoid memory bloat of large binary files
pathname.open('rb') { |f| f.read }
end

而将 Assets 传回自身是“具有机架能力的物体”
# Add enumerator to allow `Asset` instances to be used as Rack
# compatible body objects.
def each
yield to_s
end

当我们查看 bundled_asset时, Asset.body被重新定义为仅检索 Assets 主体,不包括任何依赖项。 Asset.to_a的定义是作为传递给Rack的数组来检索 Assets 的自身及其所有依存关系。

这样, Assets 不会合并在一起,而是作为单独的对象,因此单独的CSS文件仍然是单独的。

关于ruby-on-rails-3.1 - ?body = 1在rails 3.1 Assets 管道中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com