Rails Sorcery Gem Intermittent undefined方法例外

时间:2014-08-07 15:53:39

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

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

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

undefined method exception

问题存在间歇,我无法以任何逻辑方式重现。 1%的时间@company将按照预期的方式处理该方法,而其他99%的时间都没有。{/ p>

在上面的屏幕中,我尝试拨打deliver_reset_password_instructions!中定义的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!,如果我是正确的,应该包含这些子模块,并使用任何配置子模块中定义的方法扩展模型。

值得一提的是,@company以及reset_password.rb中定义的所有其他实例方法都发生了相同的行为(我没有直接调用它,但是Sorcery只在1%的时间调用它一个成功的公司创建)。

现在已经挣扎了大约2天,已经没有想法了。

非常感谢任何帮助!

更新

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

1 个答案:

答案 0 :(得分:2)

我发现了问题!

我找到了! 1.5天后。

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

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

解决上述问题:sferik / rails_admin#1697

这显然与法术不太好。

一切都很好。

更多信息: GitHub Issue