[英]Clone Class with class variables in Ruby
我有一些第三方 class ,它广泛使用 class 变量:
class Config
def default_locale
@@default_locale ||= :en
end
end
这个 class (I18n::Config) 退出大,有很多 class 变量。 完全重写它不是一个案例。
我需要获取此 class 的实例,这不会影响原始配置 class 变量。
这对于 Rails 应用程序来说是必需的,我尝试让 I18n 可以根据每个请求进行配置,并且同时保证线程安全。
为了线程安全,我将使用RequestStore 。 我需要放一个独立的 Config 实例,它不会影响原来的 class 变量。
在 class 上调用.dup 以获得可以启动的相同但独立的匿名 class。
config1 = I18n.config
config2 = I18n::Config.new # same class
config3 = I18n::Config.dup.new # different class
config1.default_locale # :en
config2.default_locale # :en
config3.default_locale # :en
config2.default_locale = :de
config1.default_locale # :de
config2.default_locale # :de
config3.default_locale # :en (unchanged)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.