Rails - 在控制器内运行rake是否可以(或可能)?

时间:2011-01-10 03:33:05

标签: ruby-on-rails rake

我正在使用sitemap_generator gem来构建xml站点地图。从自述文件:

  

...运行rake sitemap:根据需要刷新以创建/重建站点地图文件

我希望在我的内容控制器中运行create操作时执行此操作。做这样的事情有最好的做法吗?

1 个答案:

答案 0 :(得分:4)

有可能,是的。但我不推荐它。 Rake任务往往需要至少几秒钟才能运行,这将占用服务器请求并延长对客户端的响应。

如果您想在每次创建后刷新站点地图,那么我会推荐两种解决方案中的一种。分析rake任务sitemap:refresh的作用,并直接从控制器中使用代码。但是我只会这样做,只要它不需要太多时间来运行,因为我对sitemap_generator了解不多,我无法分辨。

另一种选择是从delayed_job运行rake任务,我发现它是首选替代方案。这样,您可以通过创建操作触发作业,但不必等待它完成。