我有一个文件中的开关列表 我需要在内存中保留这些值。我不能使用像memcache,redis这样的外部缓存存储。我也没有使用ruby企业版。
这就是我现在正在做的事情
#load the cache when the project is starting
MYCACHE = ActiveSupport::Cache::MemoryStore.new
MYCACHE.write('myswitch', File.read('/tmp/switch'))
#run this when a passenger instance is created, by declaring in environment.rb
begin
PhusionPassenger.on_event(:starting_worker_process) do |forked|
if forked
MYCACHE.write('myswitch', File.read('/tmp/switches.json'))
end
end
rescue
end
所以每当我更改文件中的开关时,我都会这样做
sudo passenger-status --verbose
并通过点击其端口刷新当前实例,并通过将文件重新加载到内存中的on_event(:starting_worker_process)调用来刷新新实例
我实际需要的是刷新生成实例的父进程,以便每次创建实例时都避免使用此块。
无论如何,我可以在不重新启动项目的情况下实现这一目标。
提前致谢。