class SQLiteServer2018
Attributes
nodes[RW]
Public Class Methods
new(nodes, debug: debug)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 18 def initialize(nodes, debug: debug) @nodes, @debug = nodes, debug if (nodes & Socket.ip_address_list.map(&:ip_address)).any? then raise SQLiteServer2018PlusException, 'Cannot use host IP address in node list' end @failcount = 0 @db = fetch_server(nodes.first) end
Public Instance Methods
execute(dbfile, *args, &blk)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 33 def execute(dbfile, *args, &blk) puts 'inside SQLiteServer2018::execute args: ' + args.inspect if @debug if block_given? then a = db_op { @db.execute(dbfile, *args) } a.each(&blk) else db_op { @db.execute dbfile, *args, &blk } end end
exists?(dbfile)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 46 def exists?(dbfile) puts 'inside SQLiteServer2018::exists?' if @debug db_op { @db.exists? dbfile } end
fields(*args)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 53 def fields(*args) db_op { @db.fields *args } end
load_db(dbfile)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 57 def load_db(dbfile) puts 'inside SQLiteServer2018::load' if @debug db_op { @db.load_db dbfile } end
ping()
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 64 def ping() db_op { @db.ping } end
query(*args, &blk)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 68 def query(*args, &blk) puts 'inside SQLiteServer2018::query args: ' + args.inspect if @debug db_op { @db.query *args, &blk } end
results_as_hash(*args)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 75 def results_as_hash(*args) db_op { @db.results_as_hash *args } end
results_as_hash=(*args)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 79 def results_as_hash=(*args) db_op { @db.results_as_hash = *args } end
table_info(*args)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 83 def table_info(*args) db_op { @db.table_info *args } end
tables(dbfile)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 87 def tables(dbfile) db_op { @db.tables dbfile } end
Private Instance Methods
db_op() { || ... }
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 94 def db_op() begin r = yield() @failcount = 0 r rescue puts 'warning: ' + ($!).inspect if @debug then puts '@nodes: ' + @nodes.inspect puts '@failcount: ' + @failcount.inspect end @nodes.rotate! @db = fetch_server(@nodes.first) @failcount += 1 retry unless @failcount > @nodes.length raise 'SQLiteServer2018Plus nodes exhausted' exit end end
fetch_server(host)
click to toggle source
# File lib/sqlite_server2018_plus.rb, line 118 def fetch_server(host) port = '57000' DRbObject.new nil, "druby://#{host}:#{port}" end