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魔法