Ruby on rails Heroku在部署后只运行一次查询

Ruby on rails Heroku在部署后只运行一次查询,ruby-on-rails,ruby-on-rails-3.1,heroku,Ruby On Rails,Ruby On Rails 3.1,Heroku,我正在编写一个Rails应用程序&目前我正在制作站点地图生成器。一切都很好,在我的电脑上仍然很好。但当我把它部署到Heroku时,我遇到了一个问题 生成器的工作非常简单:它只写入一个资源的所有URL,代码如下所示: 控制器: 类SitemapController在描述处更新 @base_url=http://{request.host_with_port} 标题['Content-Type']='application/xml' def索引 回应待办事项|格式| format.html form

我正在编写一个Rails应用程序&目前我正在制作站点地图生成器。一切都很好,在我的电脑上仍然很好。但当我把它部署到Heroku时,我遇到了一个问题

生成器的工作非常简单:它只写入一个资源的所有URL,代码如下所示:

控制器:

类SitemapController在描述处更新 @base_url=http://{request.host_with_port} 标题['Content-Type']='application/xml' def索引 回应待办事项|格式| format.html format.xml 终止 终止 终止 终止 视图:

0.6 0.5 正如我已经说过的,在本地它可以正常工作,但是在Heroku上,预期的结果在部署后只显示一次,所有其他时间都不会显示链接,因为没有选择任何解决方案

以下是日志:

2012-01-05T16:32:34+00:00应用程序[web.1]:于2012-01-05 16:32:34+0000启动了194.44.214.138的GET/sitemap.xml 2012-01-05T16:32:34+00:00应用程序[web.1]: 2012-01-05T16:32:34+00:00应用程序[web.1]:SitemapControllerindex将处理为XML 2012-01-05T16:32:34+00:00应用程序[web.1]:解决方案加载5.1ms从解决方案订单中选择解决方案。*由描述处更新 2012-01-05T16:32:34+00:00应用程序[web.1]:1.4ms显示搜索路径 2012-01-05T16:32:34+00:00应用程序[web.1]:呈现的站点地图/index.xml.erb 19.4ms 2012-01-05T16:32:34+00:00应用程序[web.1]:在92ms的视图中完成了200次OK:70.4ms | ActiveRecord:21.3ms 2012-01-05T16:32:34+00:00应用程序[web.1]:缓存:[GET/sitemap.xml]未命中 2012-01-05T16:32:40+00:00应用程序[web.1]: 2012-01-05T16:32:40+00:00应用程序[web.1]: 2012-01-05T16:32:40+00:00应用程序[web.1]:于2012-01-05 16:32:40+0000启动了194.44.214.138的GET/sitemap.xml 2012-01-05T16:32:40+00:00应用程序[web.1]:SitemapControllerindex将处理为XML 2012-01-05T16:32:40+00:00应用程序[web.1]:呈现的站点地图/index.xml.erb 0.0ms 2012-01-05T16:32:40+00:00应用程序[web.1]:在1ms视图中完成了200次OK操作:0.4ms |活动记录:0.0ms 2012-01-05T16:32:40+00:00应用程序[web.1]:缓存:[GET/sitemap.xml]未命中 2012-01-05T16:32:40+00:00 heroku[路由器]:获取www.my.url/sitemap.xml dyno=web.1队列=0等待=0ms服务=9ms状态=200字节=299 2012-01-05T16:32:43+00:00应用程序[web.1]: 2012-01-05T16:32:43+00:00应用程序[web.1]: 2012-01-05T16:32:43+00:00应用程序[web.1]:于2012-01-05 16:32:43+0000启动了194.44.214.138的GET/sitemap.xml 2012-01-05T16:32:43+00:00应用程序[web.1]:SitemapControllerindex将处理为XML 2012-01-05T16:32:43+00:00应用程序[web.1]:渲染的站点地图/index.xml.erb 0.0ms 2012-01-05T16:32:43+00:00应用程序[web.1]:在0毫秒视图中完成了200次OK操作:0.3毫秒|活动记录:0.0毫秒 2012-01-05T16:32:43+00:00应用程序[web.1]:缓存:[GET/sitemap.xml]未命中 2012-01-05T16:32:43+00:00 heroku[路由器]:获取www.my.url/sitemap.xml dyno=web.1队列=0等待=0ms服务=7ms状态=200字节=299 2012-01-05T16:32:44+00:00应用程序[web.1]: 2012-01-05T16:32:44+00:00应用程序[web.1]: 2012-01-05T16:32:44+00:00应用程序[web.1]:于2012-01-05 16:32:44+0000启动了194.44.214.138的GET/sitemap.xml 2012-01-05T16:32:44+00:00应用程序[web.1]:SitemapControllerindex将处理为XML 2012-01-05T16:32:44+00:00应用程序[web.1]:渲染的站点地图/index.xml.erb 0.0ms 2012-01-05T16:32:44+00:00应用程序[web.1]:在1ms视图中完成了200次OK操作:0.4ms |活动记录:0.0ms 2012-01-05T16:32:44+00:00应用程序[web.1]:缓存:[GET/sitemap.xml]未命中 2012-01-05T16:32:44+00:00 heroku[路由器]:获取www.my.url/sitemap.xml dyno=web.1队列=0等待=0ms服务=30ms状态=200字节=299 因此,正如您所看到的,解决方案加载只在第一次请求时发出,而在其他请求期间跳过。 你知道有什么问题吗

顺便说一句,我还没有试用过以前的版本,但从谷歌网站管理员工具来看,似乎一切都很好。这可能是由我所做的格式更改引起的吗?我在中添加了下一行

config/initializers/time_formats.rb

时间::日期\格式[:站点地图]=%Y-%m-%d 在控制器中

.to_:sitemap 方法调用位于的更新的_


我将非常感谢您的任何回复或提示。

您的控制器代码非常丰富。由于某些原因,def索引在其自身中有两次。你应使用:

def index
    @solutions = Solution.find(:all, :order => "updated_at DESC") 
    @base_url = "http://#{request.host_with_port}"
    headers['Content-Type'] = 'application/xml'
    respond_to do |format|
      format.html
      format.xml
    end
end

您能否从控制器提供更多信息、过滤器存在之前的情况、方法外观等?@andrewpthorp编辑的描述,现在显示完整控制器。你太棒了:这么简单的解决方案,这么有帮助。双def索引对我来说也是错误的,但当我从一些教程中复制它时,我认为它是某种ruby魔法