发现经常有”超时“的错误信息,如/usr/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill': execution expired (Timeout::Error),恩,应该是网络不稳定或者是服务器响应太慢的结果,需要捕获下这个异常并做些处理,记录如下:
需要注意的是,Timeout::Error不是StandardError的子类, 而是继承至 Interrupt class,所以捕获的时候,需要格外注意,演示如下:
require 'net/pop3'
begin
Net::POP3.auth_only(@server, @port, @username, @password)
rescue => e
write_error_to_logfile(e)
do_something_sensible
end
看上面的这段代码,当POP3服务器不能及时响应的时候,所触发的异常并不能被下面捕获到,原因就是上面说的,再看正确的处理代码:
require 'net/pop3'
begin
Net::POP3.auth_only(@server, @port, @username, @password)
rescue => e
write_error_to_logfile(e)
do_something_sensible
rescue Timeout::Error => e
write_error_to_logfile(e)
do_something_sensible_for_timeout
end
这段代码可以正常工作,并按照我们的意愿来处理了。
如果您知道对方的服务器会比较慢的响应,或者你知道网络状态不好,你可以单独设置这个TimeOut的时间,代码如下:
require 'timeout'
...
...
begin
timeout(60) do
resp, body=3Dh.get('/index.html')
puts body
end
rescue TimeoutError
puts "Timed Out"
end
或者这样:(来源:http://textsnippets.com/posts/show/868)
http = Net::HTTP.new(url.host, url.port)
http.read_timeout=time_out
分享到:
相关推荐
Rails异常处理程序 从版本1升级? 这是Rails的灵活异常处理程序,适用于希望创建自己的错误跟踪服务的人员。 它面向经验丰富的Rails开发人员,这些开发人员不仅要管理几个Rails应用程序,而且还要管理多个应用程序。...
基本上,我们捕获 Rack::Timeout 引发的 Exception 并将其转换为 StandardError 以便 Puma 工作人员不会被杀死。 有关问题的更好描述,请参阅 。 基本用法 Rails 应用程序 # Gemfile gem "rack-timeout-puma" 这...
Ruby on Rails:Rails中的表单处理.docx
在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...
在Ruby on Rails开发中,错误处理是至关重要的一个环节,因为它可以帮助开发者及时发现并修复问题,从而保持应用程序的稳定运行。"Ruby-Rails的异常通知插件"正是为了解决这个问题而诞生的。Exception Notification...
您可以通过设置RACK_TIMEOUT_SERVICE_TIMEOUT环境变量来进行修改。 还有一些其他设置,请继续阅读以了解详细信息。 Rack :: Timeout不能解决长时间运行的请求问题,它是一种调试和修复工具。 应用程序开发人员应...
9. **ActiveJob**:Rails的后台任务处理框架,可以配合各种队列服务(如Resque、Sidekiq等)处理异步任务。 10. **Rails Console**:提供了一个交互式的命令行工具,用于检查和调试应用,执行Ruby代码,以及与...
此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...
Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...
- 实现逻辑处理。 #### 十二、练习作业5-实作简单的Account后台机制 - **目标**: - 构建用户账户后台。 - **实现过程**: - 显示用户的Group列表。 - 显示用户的Post列表。 - 排序优化: 按发布时间或热度排序...
rails-timeago提供了一个timeago_tag助手来创建可用于插件的时间标签。 安装 将此行添加到您的应用程序的Gemfile : gem 'rails-timeago' , '~> 2.0' 然后执行: $ bundle 或将其自己安装为: $ gem install ...
3. **错误处理和恢复**:框架提供了内置的错误处理机制,确保即使在处理过程中出现异常,也能优雅地处理消息,避免数据丢失。 4. **线程和进程安全**:Karafka支持多线程和多进程消费,能够充分利用服务器资源,...
Asset Pipeline优化了前端资源的处理,Cucumber-Rails则提供了强大的测试工具,确保代码的质量和功能符合业务需求。这样的组合对于保持代码的整洁、提高团队协作效率和降低维护成本具有重要意义。 总的来说,了解和...
此外,Rails还内置了许多实用功能,如ActiveRecord(用于数据库交互)、Action View(用于页面渲染)和Action Controller(用于处理用户请求),这些都使得开发者能够快速构建出功能丰富的Web应用程序。 #### 2. ...
标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...
1. **activesupport-2.1.0.gem**:ActiveSupport是Rails的一个重要库,提供了许多实用的工具和方法,如时间区处理、字符串格式化、数组和哈希操作等。它也包含了一些核心的Ruby扩展,帮助开发者编写更简洁、更具表达...
1. Active Record:这是 Rails 的 ORM(对象关系映射)层,负责处理数据库交互。在这一版本中,Active Record 提供了更强大的查询接口,包括 SQL 方法的集成和更灵活的关系管理。 2. Action Pack:包含了 MVC 架构...
模型负责数据操作,视图用于展示用户界面,而控制器则作为两者之间的桥梁,处理用户请求并调用模型方法。在Aptana中,你可以直接在这些目录中编写相应的Ruby代码,IDE会提供代码补全和错误检查等功能。 例如,要在...
8. **ActiveSupport**:包含许多实用的工具类和模块,如时间戳处理、字符串处理等,它们被广泛地应用于Rails应用中。 9. **测试驱动开发(TDD)和集成测试**:Rails鼓励开发者使用Test::Unit或Rspec进行测试,确保...
Rails是Ruby语言的一个著名Web开发...随着对Rails框架的深入理解,你可以逐步构建出功能丰富的购物系统,包括商品浏览、购物车、订单处理等功能。在实际操作中,参考Rails的官方文档和社区资源将是提升技能的好方法。