Module: Coin
- Extended by:
- Forwardable
- Defined in:
- lib/coin.rb,
lib/coin/vault.rb,
lib/coin/version.rb
Defined Under Namespace
Classes: Vault
Constant Summary collapse
- VERSION =
"0.1.6"
Class Attribute Summary collapse
- .port ⇒ Object
-
.remote_uri ⇒ Object
Returns the value of attribute remote_uri.
- .uri ⇒ Object
Class Method Summary collapse
- .pid ⇒ Object
- .pid_file ⇒ Object
- .read(key, lifetime = 300) ⇒ Object
- .remote_server ⇒ Object
- .server ⇒ Object
- .server_running? ⇒ Boolean
- .start_server(force = nil) ⇒ Object
- .stop_server ⇒ Object
Class Attribute Details
.port ⇒ Object
24 25 26 |
# File 'lib/coin.rb', line 24 def port @port ||= 8955 end |
.remote_uri ⇒ Object
Returns the value of attribute remote_uri.
33 34 35 |
# File 'lib/coin.rb', line 33 def remote_uri @remote_uri end |
.uri ⇒ Object
29 30 31 |
# File 'lib/coin.rb', line 29 def uri @uri ||= "druby://localhost:#{port}" end |
Class Method Details
.pid ⇒ Object
76 77 78 |
# File 'lib/coin.rb', line 76 def pid File.read(Coin.pid_file) if File.exist?(Coin.pid_file) end |
.pid_file ⇒ Object
72 73 74 |
# File 'lib/coin.rb', line 72 def pid_file "/tmp/coin-pid-63f95cb5-0bae-4f66-88ec-596dfbac9244" end |
.read(key, lifetime = 300) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/coin.rb', line 14 def read(key, lifetime=300) value = server.read(key) if value.nil? && block_given? value = yield write(key, value, lifetime) end value end |
.remote_server ⇒ Object
67 68 69 70 |
# File 'lib/coin.rb', line 67 def remote_server DRb.start_service @server = DRbObject.new_with_uri(remote_uri) end |
.server ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/coin.rb', line 38 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
80 81 82 83 84 85 86 87 88 89 |
# File 'lib/coin.rb', line 80 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
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/coin.rb', line 91 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
107 108 109 110 111 112 |
# File 'lib/coin.rb', line 107 def stop_server Process.kill("HUP", @pid.to_i) if server_running? sleep 0.1 while server_running? DRb.stop_service true end |