如何刷新父进程中的rails缓存而不重新启动乘客中的项目

时间:2013-08-20 07:58:41

标签: ruby-on-rails caching passenger

我有一个文件中的开关列表 我需要在内存中保留这些值。我不能使用像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)调用来刷新新实例

我实际需要的是刷新生成实例的父进程,以便每次创建实例时都避免使用此块。

无论如何,我可以在不重新启动项目的情况下实现这一目标。

提前致谢。

0 个答案:

没有答案