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 131 def with_server(default_server, read_only_server=default_server) 132 set_default_server(default_server, read_only_server) 133 yield 134 ensure 135 clear_default_server 136 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 147 def clear_default_server 148 t = Sequel.current 149 a = sync{@default_servers[t]} 150 a.pop 151 sync{@default_servers.delete(t)} if a.empty? 152 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 155 def pick_server(server) 156 a = sync{@default_servers[Sequel.current]} 157 if !a || a.empty? 158 super 159 else 160 # Hash handling required to work when loaded after arbitrary servers plugin. 161 case server 162 when :default, nil 163 v = a[-1][0] 164 v = @servers[v] unless v.is_a?(Hash) 165 v 166 when :read_only 167 v = a[-1][1] 168 v = @servers[v] unless v.is_a?(Hash) 169 v 170 else 171 super 172 end 173 end 174 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 141 def set_default_server(default_server, read_only_server=default_server) 142 sync{(@default_servers[Sequel.current] ||= [])} << [default_server, read_only_server] 143 end