gpt4 book ai didi

ruby-on-rails - 使用 rails/spring 重置类变量

转载 作者:数据小太阳 更新时间:2023-10-29 08:45:36 24 4
gpt4 key购买 nike

我有一个这样定义的类:

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 相关,我通过删除 spring 来修复它。

感谢@NekoNova 将我指向文档的正确部分,我找到了 that :

This saves off the first version of the User class, which will not be the same object as User after the code has been reloaded:

[...]

So to avoid this problem, don't save off references to application constants in your initialization code.

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

关于ruby-on-rails - 使用 rails/spring 重置类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29693399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com