【问题标题】:Clone Class with class variables in Ruby在 Ruby 中使用类变量克隆类
【发布时间】:2020-07-23 08:33:09
【问题描述】:

我有第三个party class,它广泛使用类变量:

class Config
  def default_locale
    @@default_locale ||= :en
  end
end

这个类(I18n::Config)很大,类变量很多。完全重写它不是一个案例。

我需要获取这个类的一个实例,它无论如何都不会影响原来的 Config 类变量。

这对于 Rails 应用程序是必需的,我尝试使 I18n 可配置每个请求线程安全同时。

为了线程安全,我将使用RequestStore。我需要放一个独立的Config实例,它不会影响原来的类变量。

【问题讨论】:

    标签: ruby-on-rails ruby internationalization rubygems rails-i18n


    【解决方案1】:

    在类上调用 .dup 以获得一个相同但独立的可以启动的匿名类。

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 2015-03-27
      • 1970-01-01
      • 2017-03-26
      • 2012-12-15
      相关资源
      最近更新 更多