大家好!🌨
P.S:以下内容献给所有参加 RubyKaigi 的朋友们 🍣。希望你们喜欢!
本周,Rails 共有 26 名优秀的贡献者,其中包括 6 名首次贡献者!如果您也愿意参与,请查看 问题列表。
去年 从 sprockets 中删除了 gzip 文件生成功能。此更改重新引入了压缩文件生成和并行文件写入,这对不支持对静态资产进行 GZIP 压缩的 Web 服务器很有用。如果您使用 Heroku 等服务,这会非常有用。
为 after_commit .. on: :action
添加了新的快捷方式。
例如,after_commit :add_to_index_later, on: :create
现在可以写成 after_create_commit :add_to_index_later
。
之前,在开发模式下,错误页面总是以 html 页面形式呈现,这在希望查看 json 响应时很不方便。此更改添加了以 json 格式查看错误的支持。它还能确保在请求诸如 post/1.json
之类的资源时,如果发生错误,它会根据 url 中的 json 格式返回 json 响应,而不是以前使用的 html 格式。
protect_from_forgery
预置默认值更改为 false
现在 protect_from_forgery
将在应用程序中调用它的位置插入到回调链中。这对于在执行必需的认证回调或防范攻击后需要运行的其他回调后 protect_from_forgery
的情况下很有用。
如果需要,可以使用 protect_from_forgery prepend: true
来始终在其他内容之前运行 protect_from_forgery
。
request_forgery_protection
初始化程序通常情况下,在 Rails API 中,您不会使用 protect_from_forgery
。如果您正在创建 API,则添加该选项的初始化程序 - request_forgery_protection
,现在已被删除。
如果我们尝试执行以下操作
ActiveSupport::Notifications.instrument('foo') do
ActiveSupport::Notifications.subscribe('foo') {}
end
将会报错,因为在 subscribe
块内,动态 subscription
还不存在。此更改确保 instrumentation
内部的订阅也会得到通知。
如果 assert_response
以前检查任何非重定向响应,如 :success
,而实际响应是 :redirect
,则显示的错误消息如下 - 预期响应为 <success>
。该更改目前在错误响应中显示重定向路径,如下 - 预期响应为 <success>,但实际重定向至 <http://test.host/posts/lol>
本周的 Rails 内容就介绍到这里。一如既往,还有很多更改我们这里没有空间一一介绍,但欢迎你 自行了解。
下期再会!