module Coin
Constants
- VERSION
Attributes
port[W]
remote_uri[R]
uri[W]
Public Class Methods
clear()
click to toggle source
# File lib/coin.rb, line 35 def clear server.clear end
delete(key)
click to toggle source
# File lib/coin.rb, line 27 def delete(key) server.delete key end
length()
click to toggle source
# File lib/coin.rb, line 31 def length server.length end
pid()
click to toggle source
# File lib/coin.rb, line 92 def pid File.read(Coin.pid_file) if File.exist?(Coin.pid_file) end
pid_file()
click to toggle source
# File lib/coin.rb, line 88 def pid_file "/tmp/coin-pid-63f95cb5-0bae-4f66-88ec-596dfbac9244" end
port()
click to toggle source
# File lib/coin.rb, line 40 def port @port ||= 8955 end
read(key, lifetime=300) { || ... }
click to toggle source
# File lib/coin.rb, line 10 def read(key, lifetime=300) value = server.read(key) if value.nil? && block_given? value = yield write(key, value, lifetime) end value end
read_and_delete(key)
click to toggle source
# File lib/coin.rb, line 19 def read_and_delete(key) server.read_and_delete key end
remote_server()
click to toggle source
# File lib/coin.rb, line 83 def remote_server DRb.start_service @server = DRbObject.new_with_uri(remote_uri) end
remote_uri=(value)
click to toggle source
# File lib/coin.rb, line 50 def remote_uri=(value) @remote_uri = value end
server()
click to toggle source
# File lib/coin.rb, line 54 def server return remote_server if remote_uri return nil unless ENV["COIN_URI"].nil? if server_running? if @server begin @server.ok? if @server rescue DRb::DRbConnError => ex @server = nil end end if @server.nil? begin @server = DRbObject.new_with_uri(uri) @server.ok? rescue DRb::DRbConnError => ex @server = nil end end end return @server if @server && server_running? start_server @server = DRbObject.new_with_uri(uri) end
server_running?()
click to toggle source
# File lib/coin.rb, line 96 def server_running? @pid = pid return false unless @pid begin Process.kill(0, @pid.to_i) rescue Errno::ESRCH => ex return false end true end
start_server(force=nil)
click to toggle source
# File lib/coin.rb, line 107 def start_server(force=nil) return if server_running? && !force stop_server if force ruby = "#{RbConfig::CONFIG["bindir"]}/ruby" script = File.expand_path(File.join(File.dirname(__FILE__), "..", "bin", "coin")) env = { "COIN_URI" => Coin.uri } pid = spawn(env, "#{ruby} #{script}") Process.detach(pid) sleep 0.1 while !server_running? DRb.start_service true end
stop_server()
click to toggle source
# File lib/coin.rb, line 123 def stop_server Process.kill("HUP", @pid.to_i) if server_running? sleep 0.1 while server_running? DRb.stop_service true end
uri()
click to toggle source
# File lib/coin.rb, line 45 def uri @uri ||= "druby://localhost:#{port}" end
write(key, value, lifetime=300)
click to toggle source
# File lib/coin.rb, line 23 def write(key, value, lifetime=300) server.write key, value, lifetime end