开发者

How do I get the rendered output of a controller's action without visiting the web page?

开发者 https://www.devze.com 2023-01-23 11:17 出处:网络
As part of the deployment process for our rails 2.3 app, I\'d like to save static versions of our error pages to the public folder.How do I get the rendered output of a controller\'s action without vi

As part of the deployment process for our rails 2.3 app, I'd like to save static versions of our error pages to the public folder. How do I get the rendered output of a controller's action without visiting the web page? I know it can be done because the functional tests do it - if I say

get :errors, :id => 404

then t开发者_C百科he body is in @response.body. I suppose I could just copy the code out of ActionController::TestCase, but I'm hoping that there's a simpler way to do it.


In the end I did just go into ActionController::TestCase, and this is what I dug out:

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
0

精彩评论

暂无评论...
验证码 换一张
取 消