Rails:我如何需要 ActiveSupport 的rescue_from 方法?
Posted
技术标签:
【中文标题】Rails:我如何需要 ActiveSupport 的rescue_from 方法?【英文标题】:Rails: How do I require ActiveSupport's rescue_from method? 【发布时间】:2014-11-20 19:27:51 【问题描述】:我在application controller
中有这个代码:
# Method to capture and handle all exceptions
rescue_from Exception do |ex|
Rails.logger.debug ex
do_stuff(ex)
end
我想把它移到一个模块中,然后:
class ApplicationController < ActionController::Base
include 'module'
...
现在我的模块看起来像:
# lib/exception_mailer.rb
require 'action_mailer'
require 'active_support'
module ExceptionMailer
# Method to capture and handle all exceptions
rescue_from Exception do |ex|
...
我得到:undefined method 'rescue_from' for ExceptionMailer:Module
我用谷歌搜索了“如何在模块中包含rescue_from?” ——我还是有点迷茫。
【问题讨论】:
此链接可能会对您有所帮助。 apidock.com/rails/ActiveSupport/Rescuable/ClassMethods/… 我想我找到了一个解决方案,使用extend ActiveSupport::Concern
并使用included do
块。 Rails 是我的 gem 的依赖项。我目前不需要任何东西。
【参考方案1】:
module Exceptionailer
# http://api.rubyonrails.org/classes/ActiveSupport/Concern.html
extend ActiveSupport::Concern
included do
rescue_from Exception do |ex|
...
end
end
end
【讨论】:
添加extend ActiveSupport::Concern
并使用 included do
块解决了我的问题。以上是关于Rails:我如何需要 ActiveSupport 的rescue_from 方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 NSTimeZone -timeZoneWithName: 与 Rails ActiveSupport 中的城市名称?
rails activesupport 通知 - 错误的数据库运行时值
使用 Ruby on Rails ActiveSupport::Concern 功能时如何“嵌套”包含模块?