如何使动态添加的方法对 Rails 4.2.0 控制器可见?

How to make dynamically added methods visible to Rails 4.2.0 controller?

这是 Rails 3.2.12 中将动态方法添加到应用程序控制器的方式:

 module WfHelper
    extend ActiveSupport::Concern
    included do
       before_action :load_wf_action_def
    end

    protected
    def load_wf_action_def
      #load methods with eval()
    end
  end

在应用程序控制器中,包含模块wf_helper:

 include WfHelper

load_wf_action_def中定义的所有方法都可用于应用程序控制器。然而,升级到 Rails 4.2.0 后,代码停止工作,应用程序控制器不再可见这些方法。调试显示 base.before_action :load_wf_action_def 正常执行,但其方法未添加到控制器 class 的 action_methods 中(AbstractController::ActionNotFound 调用动态方法时)。问题来自操作包中的 base.rb。我们不知道 base.rb 中的确切变化是什么导致代码被破坏。有没有人为 Rails 4 添加动态方法到控制器并想分享经验?

我所做的是手动将操作添加到 Controller.action_methods 并解决了问题。