使用 Ruby 中的 class 个变量克隆 Class

Clone Class with class variables in Ruby

我有第三个 party 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)