带导轨/弹簧的类变量复位

杰弗罗伊

我有一个这样定义的类:

class PublicationJob < ActiveJob::Base
  def self.jobs
    @jobs ||= Hash{|h, k| h[k] = []}
  end
  def self.register(format, job_class)
    jobs[format] << job_class
  end
  # [...]
end

要注册不同的作业类,我放入了一个初始化器:

PublicationJob.register(:tex, SaveJob)
PublicationJob.register(:saved_tex, TexJob)
#...

rails console我尝试:

PublicationJob.jobs
#> {:tex => [SaveJob], :saved_tex => [TexJob]}

但是,如果我退出控制台(Ctrl-D)然后重新启动它,则在某些时候哈希将为空!

为什么在这种情况下重置类变量?

我使用rails 4.2.1和spring,并且我知道如果我杀死/停止spring会再次工作一段时间。与春天有关吗?

杰弗罗伊

好的,这完全与Spring有关,我通过删除spring进行了修复。

由于@NekoNova谁指出我的文档的右侧部分,我发现

这样可以保存User类的第一个版本,该版本在重新加载代码后将与User不同:

[...]

因此,为避免此问题,请不要在初始化代码中保存对应用程序常量的引用。

换句话说,我无法使用初始化程序来初始化我的类,因为尽管它可以在生产环境中使用,但在开发环境中却无法使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章