Module: Coin
- Defined in:
- lib/coin.rb,
lib/coin/vault.rb,
lib/coin/version.rb
Defined Under Namespace
Classes: Vault
Constant Summary collapse
- VERSION =
"0.1.9"
Class Attribute Summary collapse
- .port ⇒ Object
-
.remote_uri ⇒ Object
Returns the value of attribute remote_uri.
- .uri ⇒ Object
Class Method Summary collapse
- .clear ⇒ Object
- .delete(key) ⇒ Object
- .length ⇒ Object
- .pid ⇒ Object
- .pid_file ⇒ Object
- .read(key, lifetime = 300) ⇒ Object
- .read_and_delete(key) ⇒ Object
- .remote_server ⇒ Object
- .server ⇒ Object
- .server_running? ⇒ Boolean
- .start_server(force = nil) ⇒ Object
- .stop_server ⇒ Object
- .write(key, value, lifetime = 300) ⇒ Object
Class Attribute Details
.port ⇒ Object
40 41 42 |
# File 'lib/coin.rb', line 40 def port @port ||= 8955 end |
.remote_uri ⇒ Object
Returns the value of attribute remote_uri.
49 50 51 |
# File 'lib/coin.rb', line 49 def remote_uri @remote_uri end |
.uri ⇒ Object
45 46 47 |
# File 'lib/coin.rb', line 45 def uri @uri ||= "druby://localhost:#{port}" end |
Class Method Details
.clear ⇒ Object
35 36 37 |
# File 'lib/coin.rb', line 35 def clear server.clear end |
.delete(key) ⇒ Object
27 28 29 |
# File 'lib/coin.rb', line 27 def delete(key) server.delete key end |
.length ⇒ Object
31 32 33 |
# File 'lib/coin.rb', line 31 def length server.length end |
.pid ⇒ Object
92 93 94 |
# File 'lib/coin.rb', line 92 def pid File.read(Coin.pid_file) if File.exist?(Coin.pid_file) end |
.pid_file ⇒ Object
88 89 90 |
# File 'lib/coin.rb', line 88 def pid_file "/tmp/coin-pid-63f95cb5-0bae-4f66-88ec-596dfbac9244" end |
.read(key, lifetime = 300) ⇒ Object
10 11 12 13 14 15 16 17 |
# 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) ⇒ Object
19 20 21 |
# File 'lib/coin.rb', line 19 def read_and_delete(key) server.read_and_delete key end |
.remote_server ⇒ Object
83 84 85 86 |
# File 'lib/coin.rb', line 83 def remote_server DRb.start_service @server = DRbObject.new_with_uri(remote_uri) end |
.server ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# 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? ⇒ Boolean
96 97 98 99 100 101 102 103 104 105 |
# 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) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# 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.(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 ⇒ Object
123 124 125 126 127 128 |
# 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 |
.write(key, value, lifetime = 300) ⇒ Object
23 24 25 |
# File 'lib/coin.rb', line 23 def write(key, value, lifetime=300) server.write key, value, lifetime end |