summaryrefslogtreecommitdiff
path: root/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
Side-by-side diff
Diffstat (limited to 'vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb') (more/less context) (ignore whitespace changes)
-rw-r--r--vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb172
1 files changed, 0 insertions, 172 deletions
diff --git a/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
deleted file mode 100644
index 940707a..0000000
--- a/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
+++ b/dev/null
@@ -1,172 +0,0 @@
-require 'benchmark'
-require 'date'
-require 'bigdecimal'
-require 'bigdecimal/util'
-
-require 'active_record/connection_adapters/abstract/schema_definitions'
-require 'active_record/connection_adapters/abstract/schema_statements'
-require 'active_record/connection_adapters/abstract/database_statements'
-require 'active_record/connection_adapters/abstract/quoting'
-require 'active_record/connection_adapters/abstract/connection_specification'
-require 'active_record/connection_adapters/abstract/query_cache'
-
-module ActiveRecord
- module ConnectionAdapters # :nodoc:
- # All the concrete database adapters follow the interface laid down in this class.
- # You can use this interface directly by borrowing the database connection from the Base with
- # Base.connection.
- #
- # Most of the methods in the adapter are useful during migrations. Most
- # notably, SchemaStatements#create_table, SchemaStatements#drop_table,
- # SchemaStatements#add_index, SchemaStatements#remove_index,
- # SchemaStatements#add_column, SchemaStatements#change_column and
- # SchemaStatements#remove_column are very useful.
- class AbstractAdapter
- include Quoting, DatabaseStatements, SchemaStatements
- include QueryCache
- @@row_even = true
-
- def initialize(connection, logger = nil) #:nodoc:
- @connection, @logger = connection, logger
- @runtime = 0
- @last_verification = 0
- end
-
- # Returns the human-readable name of the adapter. Use mixed case - one
- # can always use downcase if needed.
- def adapter_name
- 'Abstract'
- end
-
- # Does this adapter support migrations? Backend specific, as the
- # abstract adapter always returns +false+.
- def supports_migrations?
- false
- end
-
- # Does this adapter support using DISTINCT within COUNT? This is +true+
- # for all adapters except sqlite.
- def supports_count_distinct?
- true
- end
-
- # Should primary key values be selected from their corresponding
- # sequence before the insert statement? If true, next_sequence_value
- # is called before each insert to set the record's primary key.
- # This is false for all adapters but Firebird.
- def prefetch_primary_key?(table_name = nil)
- false
- end
-
- def reset_runtime #:nodoc:
- rt, @runtime = @runtime, 0
- rt
- end
-
- # QUOTING ==================================================
-
- # Override to return the quoted table name if the database needs it
- def quote_table_name(name)
- name
- end
-
- # REFERENTIAL INTEGRITY ====================================
-
- # Override to turn off referential integrity while executing +&block+
- def disable_referential_integrity(&block)
- yield
- end
-
- # CONNECTION MANAGEMENT ====================================
-
- # Is this connection active and ready to perform queries?
- def active?
- @active != false
- end
-
- # Close this connection and open a new one in its place.
- def reconnect!
- @active = true
- end
-
- # Close this connection
- def disconnect!
- @active = false
- end
-
- # Returns true if its safe to reload the connection between requests for development mode.
- # This is not the case for Ruby/MySQL and it's not necessary for any adapters except SQLite.
- def requires_reloading?
- false
- end
-
- # Lazily verify this connection, calling +active?+ only if it hasn't
- # been called for +timeout+ seconds.
- def verify!(timeout)
- now = Time.now.to_i
- if (now - @last_verification) > timeout
- reconnect! unless active?
- @last_verification = now
- end
- end
-
- # Provides access to the underlying database connection. Useful for
- # when you need to call a proprietary method such as postgresql's lo_*
- # methods
- def raw_connection
- @connection
- end
-
- def log_info(sql, name, runtime)
- if @logger && @logger.debug?
- name = "#{name.nil? ? "SQL" : name} (#{sprintf("%f", runtime)})"
- @logger.debug format_log_entry(name, sql.squeeze(' '))
- end
- end
-
- protected
- def log(sql, name)
- if block_given?
- if @logger and @logger.debug?
- result = nil
- seconds = Benchmark.realtime { result = yield }
- @runtime += seconds
- log_info(sql, name, seconds)
- result
- else
- yield
- end
- else
- log_info(sql, name, 0)
- nil
- end
- rescue Exception => e
- # Log message and raise exception.
- # Set last_verification to 0, so that connection gets verified
- # upon reentering the request loop
- @last_verification = 0
- message = "#{e.class.name}: #{e.message}: #{sql}"
- log_info(message, name, 0)
- raise ActiveRecord::StatementInvalid, message
- end
-
- def format_log_entry(message, dump = nil)
- if ActiveRecord::Base.colorize_logging
- if @@row_even
- @@row_even = false
- message_color, dump_color = "4;36;1", "0;1"
- else
- @@row_even = true
- message_color, dump_color = "4;35;1", "0"
- end
-
- log_entry = " \e[#{message_color}m#{message}\e[0m "
- log_entry << "\e[#{dump_color}m%#{String === dump ? 's' : 'p'}\e[0m" % dump if dump
- log_entry
- else
- "%s %s" % [message, dump]
- end
- end
- end
- end
-end