簡體   English   中英

使用 Ruby 中的 class 變量克隆 Class

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM