在脚本/控制台或rake任务中使用渲染模板和will_paginate

时间:2011-03-16 13:12:37

标签: ruby-on-rails ruby will-paginate

我想使用rake任务预生成一些页面。我想生成所有用户的页面(每页800.000和90个用户,因此少于9000页)。将页面保存在磁盘上。

现在我在rake任务中向控制器操作发出了很多请求,并使用Mechanize获取结果并将页面保存在磁盘上。

问题是我不想向我的服务器发出这么多请求(因为它超时)速度无关紧要因为我有一个额外的服务器。我想生成页面而不需要做很多请求,所以我必须自己构建html字符串。

在视图中我使用了will_paginate帮助程序进行分页。我真的不知道如何在rake任务中构建分页。 will_paginate正在使用像响应变量这样的东西。

有人可以帮助我在不使用请求的情况下进行分页吗?或者也许是另一个宝石来进行分页......它不一定非常漂亮

我正在使用Rails 2.1

由于

1 个答案:

答案 0 :(得分:2)

我通过另一个想要预加载缓存的SO问题找到了这个。 https://github.com/tommyh/preheat

Preheat.it do
  app.get("/")
end

因此,在您的情况下,您可以使用cron作业来预热缓存。

之类的东西
total_user_pages = 9000 #calculate it
Preheat.it do
  1.upto(total_user_pages) do |i| 
    app.get("/users?page=#{i}") 
  end
end

我检查过并且在2.1中引入了Rails.cache,所以你在那里很好。与机械化不同,此宝石不会调用您的网络服务器

  

“ActiveSupport的获取方法正在进行中   仅在ruby过程中修改   这是使用预热,所以有些东西   像mechanize / wget / curl会调用   通过你的前端页面   网络服务器,不受影响   Preheat.it,而app.get会   直接打电话给你的控制器   同样的红宝石过程。“

然后,您需要在应用中使用Rails.cache来利用它。