gpt4 book ai didi

ruby - 如何将 Rack 中间件注入(inject)现有的 Rack 应用程序?

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:35 29 4
gpt4 key购买 nike

给定一个非 Rails 的 Rack 应用程序,

构建器.rb:

def app
Rack::Builder.new{
use Rack::Static, urls:static_paths, root:'public'

run ThaApp
}.to_app
end

如何使用 spec_helper 注入(inject)测试中间件?

最佳答案

如果您正在使用 Builder(使用、运行等),它看起来您可以在运行时轻松地注入(inject)或删除中间件。这是代码:https://github.com/rack/rack/blob/master/lib/rack/builder.rb

请注意,它构建了中间件堆栈,当您调用 run 时,它会在中间件对象树中实例化堆栈(称为“@use”),每个中间件对象都引用下一个 - 请参阅方法“use”和“to_app”。

所以:不要认为 Builder 的设计目的是允许在堆栈中动态添加和减去中间件。

您可以重建一个新的动态堆栈,或者使用带有或不带有测试中间件的多个 Rack 应用程序,或者像 Rails 那样做一些后空翻来动态地重新配置堆栈。

您还可以仅在测试模式下添加一个测试中间件,或者添加一个可以轻松停用的中间件,使其成为直通中间件。然后你的 spec_helper 将设置并清除变量告诉它通过。

关于ruby - 如何将 Rack 中间件注入(inject)现有的 Rack 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29650231/

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