Explore >> Select a destination


You are here

blog.arkency.com
| | tenderlovemaking.com
11.1 parsecs away

Travel
| | File.open('somefile.txt', 'wb') do |fh| # Open the file fh.write "hello world" # Do some work with the file end # Close file when block returns ActiveRecord::Base.establish_connection( :adapter => "sqlite", :database => "path/to/dbfile") connection_handle = ActiveRecord::Base.connection def retrieve_connection_pool(klass) pool = @connection_pools[klass.name] return pool if pool return nil if ActiveRecord::Base == klass retrieve_connection_pool klass.superclass end spec = ActiveRecord::Base.specificiation ActiveRecord::ConnectionPool.open(spec) do |conn| ... end spec = database_a ActiveRecord::ConnectionPool.open(spec) do |conn| User.find_all end spec = database_b ActiveRecord::ConnectionPool.open(spec) do |conn| User.find_all end # Retrieve the connection associated with the current thread, or call # #checkout to obtain one if necessary. # # #connection can be called any number of times; the connection is # held in a hash keyed by the thread id. def connection @reserved_connections[current_connection_id] ||= checkout end def current_connection_id #:nodoc: ActiveRecord::Base.connection_id ||= Thread.current.object_id end def connection_id Thread.current['ActiveRecord::Base.connection_id'] end def connection_id=(connection_id) Thread.current['ActiveRecord::Base.connection_id'] = connection_id end # Returns any connections in use by the current thread back to the pool, # and also returns connections to the pool cached by threads that are no # longer alive. def clear_active_connections! @connection_pools.each_value {|pool| pool.release_connection } end # Signal that the thread is finished with the current connection. # #release_connection releases the connection-thread association # and returns the connection to the pool. def release_connection(with_id = current_connection_id) conn = @reserved_connections.delete(with_id) checkin conn if conn end @queue.wait(@timeout) if(@checked_out.size < @connections.size) next else clear_stale_cached_connections! if @size == @checked_out.size raise ConnectionTimeoutError, "could not obtain a database connection#{" within #{@timeout} seconds" if @timeout}. The max pool size is currently #{@size}; consider increasing it." end end def clear_stale_cached_connections! keys = @reserved_connections.keys - Thread.list.find_all { |t| t.alive? }.map { |thread| thread.object_id } keys.each do |key| checkin @reserved_connections[key] @reserved_connections.delete(key) end end class ConnectionManagement def call env spec = ActiveRecord::Base.spec connection = ActiveRecord::ConnectionPool.open spec ActiveRecord::Base.connection = connection @app.call env connection.close end end Thread.new do spec = ActiveRecord::Base.spec ActiveRecord::ConnectionPool.open(spec) do |connection| ActiveRecord::Base.connection = connection # do some stuff end end
| | janko.io
22.4 parsecs away

Travel
| | When I started developing the Rails integration for Rodauth, one of the first problems I needed to solve was how to make Rodauth work seamlessly with Active Record, given that it uses Sequel for database interaction. I believed these two could coexist together, because Sequel is mostly hidden from the Rodauth user anyway, and all that really matters is that Rodauth's SQL statements get executed on the database.
| | pganalyze.com
21.0 parsecs away

Travel
| | Learn how to create and implement a row level security policy in Rails, allowing to limit the database rows a user can access.
| | vishaltelangre.com
75.9 parsecs away

Travel
|