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