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