直接从Rails操作使用机架中间件

时间:2011-08-10 14:42:46

标签: ruby-on-rails rack

我有一个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。

1 个答案:

答案 0 :(得分:1)

如果您想使用Rails的机架应用程序,则必须从路由器安装它(routes.rb)

AppName::Application.routes.draw do 
  # Other routes

  mount MyRackApp => "/pathToReachIt"

  # root to: '...'
end

更多信息here