【问题标题】:Rails 4, undefined method `rescue_action_in_public'Rails 4,未定义的方法“rescue_action_in_public”
【发布时间】:2014-11-26 10:04:03
【问题描述】:

因此,当引发异常时,我尝试在包含在我的控制器中的模块中对 :rescue_action_in_public 执行 alias_method,但我不断收到“来自 FooController 的未定义方法 `rescue_action_in_public'”。

这是我的模块:

module DoSomethingToExceptions
  extend ActiveSupport::Concern

  included do
    alias_method :rescue_action_in_public_with_some_extra_thing, :rescue_action_in_public
    alias_method :rescue_action_in_public, :rescue_action_in_public_without_some_extra_thing
  end

  def rescue_action_in_public_with_some_extra_thing
    do_something
    rescue_action_in_public_without_some_extra_thing
  end
end

为了测试这一点,我的控制器中有一个before_filter,它调用一个只执行raise 'FooException' 的方法,只是为了调用rescue_action_in_public。除此之外,包括这个模块,这就是相关的控制器代码。

我真的试图了解这应该如何工作。我认为这可行的方式是,当引发异常时,rescue_action_in_public 被称为“来自 rails”,并且由于我随后为此方法设置别名,因此调用我的别名方法,执行我想要添加的任何操作该过程,然后我告诉它执行rescue_action_in_public_without_some_extra_thing,然后将其别名为原始rescue_action_in_public,因此本机rails进程应该继续进行。

我做错了什么?

【问题讨论】:

    标签: ruby-on-rails exception undefined rescue


    【解决方案1】:

    rescue_action_in_public 不再是 Rails API 的一部分。基于http://apidock.com/rails/ActionController/Rescue/rescue_action_in_public,它存在于 Rails 1.x 和 2.x 中,但在 Rails 3.0 中被删除。

    Rails 4 中最接近的等价物可能是 rescue_from,但它是为了避免特定异常,而不是所有异常。

    【讨论】:

      猜你喜欢
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 2013-07-16
      • 1970-01-01
      相关资源
      最近更新 更多