在我的 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'
我有两个问题:
- 为什么
rescue
不起作用?如果我将其更改为rescue LoadError => e
,异常将得到妥善处理。 - 除了挽救此类异常,还有其他替代方法吗?
最佳答案
如果您省略异常类型,默认情况下 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/