我有一个Rack中间件,我想嵌入我的Rails应用程序。通过嵌入,我的意思是将它注入我的应用程序的布局中,以便<%= yield %>
包含Rack应用程序返回的内容。
这是我目前的解决方案:
def show
result = MyRackApp.new.call(request.env)
render :text => result[2].read, :status => result[0]
end
这是有问题的,因为result[2]
并不总是具有IO样式read
方法,例如它可能是Rack::File
。
那么,如何让Rails控制器呈现[200, {}, some_io_object]
类型的Rack响应?或者,我可以使用能够渲染Rails布局的Rack中间件来反过来吗?
我正在使用Rails 3.0.9。
答案 0 :(得分:1)
如果您想使用Rails的机架应用程序,则必须从路由器安装它(routes.rb)
AppName::Application.routes.draw do
# Other routes
mount MyRackApp => "/pathToReachIt"
# root to: '...'
end
更多信息here