如何在不访问网页的情况下获得控制器动作的渲染输出?

时间:2010-11-05 14:19:45

标签: ruby-on-rails

作为rails 2.3 app的部署过程的一部分,我想将错误页面的静态版本保存到公共文件夹。如何在不访问网页的情况下获得控制器动作的渲染输出?我知道它可以完成,因为功能测试可以做到 - 如果我说

get :errors, :id => 404

然后身体在@ response.body中。我想我可以从ActionController :: TestCase中复制代码,但我希望有一种更简单的方法。

1 个答案:

答案 0 :(得分:1)

最后我刚刚进入ActionController :: TestCase,这就是我挖出来的:

def get_content host, path, filename
  request = ActionController::Request.new 'HTTP_HOST' => host,
                                          'REQUEST_URI' => path,
                                          'REQUEST_METHOD' => 'GET',
                                          'rack.input' => '',
                                          'rack.url_scheme' => 'http'

  controller = ActionController::Routing::Routes.recognize(request).new
  response = ActionController::Response.new
  controller.process request, response
  return response.body
end