ruby-on-rails - 拯救 Rails 应用程序中的 LoadError

标签 ruby-on-rails ruby ruby-on-rails-3 ruby-1.8.7

在我的 Rails 3 应用程序中,我通过以下方式获取 path_info:

Rails.application.routes.recognize_path(url, { :method => request.request_method }) rescue {}

如果爬虫命中“http://localhost:3000/admin_”这样的 URL,上面的代码会引发以下错误:

LoadError: Expected /Users/user/myRailsApp/app/controllers/admin_controller.rb to define Admin_Controller
from /Users/user/.rvm/gems/ree-1.8.7-2012.02/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:492:in `load_missing_constant'

我有两个问题:

  1. 为什么 rescue 不起作用?如果我将其更改为 rescue LoadError => e,异常将得到妥善处理。
  2. 除了挽救此类异常,还有其他替代方法吗?

最佳答案

如果您省略异常类型,默认情况下 rescue 将仅救援 StandardError 异常和子类。

LoadError 没有继承自 StandardError:

LoadError.ancestors
 => [LoadError, ScriptError, Exception, Object, Kernel, BasicObject]

因此,单行救援模式不适用于 LoadError

关于ruby-on-rails - 拯救 Rails 应用程序中的 LoadError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32677611/

相关文章:

ruby-on-rails - Rails - link_to、路由和嵌套资源

ruby-on-rails - Ruby 中 PI、cos 的类型是什么

ruby-on-rails - Nokogiri 未能构建 gem native 扩展(RuntimeError)?

ruby-on-rails - 如何使用停用 Webrick 的 SSL

ruby-on-rails - rails 上的公共(public)事件 gem

ruby-on-rails - 在 Rails 中使用 NetHTTP 打 Rails

ruby-on-rails - devise/cancan模拟帐户

sql - Rails has_many through 查询,有两个引用,也就是使用 through table 属性

ruby - 将键数组和值数组转换为 Ruby 中的哈希

ruby-on-rails - `update_attribute` 更新了与指定不同的属性