我有一个缓存和数据库的数据存储,很简单。诡异的部分是我想要一种方法来控制数据存储是否以实时方式访问数据库。也就是说,当进程运行时,我希望能够切换,如果它连接到数据库或不。如何获取数据到正在运行的ruby进程?
我看着env变量,但它似乎并不像那些在进程运行时得到更新。有没有一种简单的方法可以让命令行进入正在运行的进程,或者我只需要依赖ops在发生灾难时能够丢弃db监听器?
请注意,这一切都是在香草红宝石 - 红宝石轨道上完成。
谢谢! -Jess
我有一个缓存和数据库的数据存储,很简单。诡异的部分是我想要一种方法来控制数据存储是否以实时方式访问数据库。也就是说,当进程运行时,我希望能够切换,如果它连接到数据库或不。如何获取数据到正在运行的ruby进程?
我看着env变量,但它似乎并不像那些在进程运行时得到更新。有没有一种简单的方法可以让命令行进入正在运行的进程,或者我只需要依赖ops在发生灾难时能够丢弃db监听器?
请注意,这一切都是在香草红宝石 - 红宝石轨道上完成。
谢谢! -Jess
我想你可以使用命名管道进行简单的沟通:
#pipes.rb:
f = File.open 'mypipe', 'r+'
loop do
begin
s = f.read_nonblock 1
rescue Exception
end
case s
when '0'
puts 'Turn off DB access!'
when '1'
puts 'Turn on DB access!'
end
sleep 1
end
你可以通过写命名管道外部控制你的数据库访问:
jablan-mbp:dev $ echo 101 > mypipe
导致:
jablan-mbp:dev $ ruby pipes.rb
Turn on DB access!
Turn off DB access!
Turn on DB access!
假设* NIX,你有没有考虑过信号? (kill -HUP pid
) - http://ruby-doc.org/core/classes/Signal.html
谢谢。这就是我们最终做的。我只是有一些虚幻的希望,但这真的不坏。 – Jess 2010-07-26 19:59:54