我想实现消息的功能,以显示在我网站的不同页面上。
我为此创建了一个包含字段的模型,例如page
,message
,active
。如果active=false
,则不会显示该消息。这很好用。
现在我想添加一个能够打开/关闭所有消息一段时间的功能。我不想更新每条消息并设置active=false
,因为1)可能有很多消息,2)我必须保存哪些消息在关闭以恢复初始时处于活动/非活动状态重新开启的状态。
如果我可以在我的模型中使用新的“全班”变量@@active
,这将非常方便。但是,使用多线程应用程序(我使用unicorn
)可能会导致麻烦,因为@@active
不会在所有进程中共享。
我无法为此找到一个好的解决方案,也许有人可以提供帮助?
答案 0 :(得分:0)
也许创建一个名为DISABLE_ALL_MESSAGES
的环境变量,然后覆盖message#active
方法以引用ENV["DISABLE_ALL_MESSAGES"]
:
def active
ENV["DISABLE_ALL_MESSAGES"] && super
end
另一种选择是将设置存储在数据库中并以类似的方式引用它。
答案 1 :(得分:0)
尝试在unicorn配置中设置preload_app = true。这使得独角兽主进程可以预加载应用程序,所有其他工作程序共享加载的数据结构。您可能希望转移到Ruby Enterprise Edition以跨进程共享内存。