0

我想实现消息功能以显示在我网站的不同页面上。我为此创建了一个模型,其中包含字段,例如page, 。如果消息不会显示。这工作正常。 messageactiveactive=false

现在我想添加一个功能来打开/关闭所有消息一段时间。我不想更新每条消息并进行设置active=false,因为 1)可能有很多消息,2)我必须保存在关闭时哪些消息是活动/非活动的,以便在重新打开时恢复初始状态.

如果我可以在模型中使用新的“类范围”变量,这将非常方便@@active。但是,使用多线程应用程序(我使用unicorn)可能会导致麻烦,因为@@active不会在所有进程中共享。

我无法在谷歌上找到一个好的解决方案,也许有人可以帮忙?

4

2 回答 2

0

尝试在您的独角兽配置中设置 preload_app=true。这让独角兽主进程预加载应用程序,所有其他工作人员共享加载的数据结构。您可能希望迁移到 Ruby 企业版以跨进程共享内存。

于 2013-05-30T14:17:40.267 回答
0

也许创建一个名为的环境变量DISABLE_ALL_MESSAGES,然后覆盖message#active要引用的方法ENV["DISABLE_ALL_MESSAGES"]

def active
  ENV["DISABLE_ALL_MESSAGES"] && super
end

另一种选择是将设置存储在数据库中并以类似的方式引用它。

于 2013-05-30T13:06:54.927 回答