module Sequel::ThreadedServerBlock
Adds with_server
support for the sharded threaded connection pool.
Public Instance Methods
with_server(default_server, read_only_server=default_server) { || ... }
click to toggle source
Set a default server/shard to use inside the block for the current thread.
# File lib/sequel/extensions/server_block.rb 127 def with_server(default_server, read_only_server=default_server) 128 begin 129 set_default_server(default_server, read_only_server) 130 yield 131 ensure 132 clear_default_server 133 end 134 end
Private Instance Methods
clear_default_server()
click to toggle source
Remove the current default server for the current thread, restoring the previous default server.
# File lib/sequel/extensions/server_block.rb 145 def clear_default_server 146 t = Thread.current 147 a = sync{@default_servers[t]} 148 a.pop 149 sync{@default_servers.delete(t)} if a.empty? 150 end
pick_server(server)
click to toggle source
Use the server given to with_server
for the given thread, if appropriate.
Calls superclass method
# File lib/sequel/extensions/server_block.rb 153 def pick_server(server) 154 a = sync{@default_servers[Thread.current]} 155 if !a || a.empty? 156 super 157 else 158 case server 159 when :default, nil 160 a[-1][0] 161 when :read_only 162 a[-1][1] 163 else 164 super 165 end 166 end 167 end
set_default_server(default_server, read_only_server=default_server)
click to toggle source
Make the given server the new default server for the current thread.
# File lib/sequel/extensions/server_block.rb 139 def set_default_server(default_server, read_only_server=default_server) 140 sync{(@default_servers[Thread.current] ||= [])} << [default_server, read_only_server] 141 end