我试图为Rails 4.2应用程序编写一些Rack Middleware,它使用gsub
方法改变响应体。我发现使用这样的模式的旧例子:
class MyMiddleware
def initialize(app)
@app = app
end
def call(env)
status, headers, response = @app.call(env)
# do some stuff
[status, headers, response]
end
end
我发现的是response.body
没有setter方法。是否还有其他模式可以开始修改身体?
答案 0 :(得分:6)
问题是它需要call
方法中第三个参数的数组。这种模式让我重新开始工作。
# not real code, just a pattern to follow
class MyMiddleware
def initialize(app)
@app = app
end
def call(env)
status, headers, response = @app.call(env)
new_response = make_new_response(response.body)
# also must reset the Content-Length header if changing body
headers['Content-Length'] = new_response.length.to_s
[status, headers, [new_response]]
end
end