【问题标题】:Rails Sorcery Gem Intermittent undefined method ExceptionsRails Sorcery Gem 间歇性未定义方法异常
【发布时间】:2014-08-08 18:20:10
【问题描述】:

我正在使用 Sorcery gem(版本 0.8.6)在 Rails 4.0.4 应用程序中验证 Company 记录。

身份验证流程运行良好,但在尝试使用 Sorcery 的子模块 - :reset_password:user_activation 时遇到了问题。在 Company 记录 (@company) 的实例上调用 Sorcery 子模块中定义的实例方法时,Rails 会抛出 undefined method 异常:

问题存在间歇性,我无法以任何合乎逻辑的方式重现。 1% 的时间@company 会按预期处理方法,而其他 99% 的时间不会。

在上面的屏幕中,我尝试调用deliver_reset_password_instructions!,它在reset_password.rb 中定义。

我的 Sorcery 初始化程序 (config/initializers/sorcery.rb) 包含:Rails.application.config.sorcery.submodules = [:reset_password, :user_activation]config.user_class = "Company"

我的公司模型 (app/models/company.rb) 包含 authenticates_with_sorcery!,如果我是正确的,它应该包含这些子模块并使用任何配置子模块中定义的方法扩展模型。

值得一提的是,send_activation_success_email!user_activation.rb 中定义的所有其他实例方法也发生了相同的行为(我没有直接调用它,但 Sorcery 仅在成功创建公司时调用它的 1% )。

已经为此苦苦挣扎了大约 2 天,已经没有想法了。

非常感谢任何帮助!

更新

  1. 我注意到它似乎在我离开计算机并在几个小时后回来后第一次工作(@company 响应子模块定义的实例方法)。它将继续工作,直到 Rails 服务器重新启动。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 gem sorcery


    【解决方案1】:

    我发现了问题!

    我找到了! 1.5 天后。

    在我的 rails_admin 初始化程序中,我有以下几行:

    Rails.application.eager_load!
    config.included_models = ActiveRecord::Base.descendants.map!(&:name)
    

    解决所描述的问题:sferik/rails_admin#1697

    这显然与巫术配合得不好。

    现在一切都好。

    更多信息: GitHub Issue

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      相关资源
      最近更新 更多