Class: CloudSQLRubyConnector::Rails::CloudSQLPostgreSQLAdapter
- Inherits:
-
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
- Object
- ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
- CloudSQLRubyConnector::Rails::CloudSQLPostgreSQLAdapter
- Defined in:
- lib/cloud_sql_ruby_connector/rails.rb
Overview
Custom adapter that uses CloudSQLRubyConnector for connections
Constant Summary collapse
- ADAPTER_NAME =
"CloudSQL PostgreSQL"- ALLOWED_PG_OPTIONS =
PG connection options that can be passed through to PG.connect See: www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS
%i[ application_name client_encoding connect_timeout options keepalives keepalives_idle keepalives_interval keepalives_count tcp_user_timeout target_session_attrs ].freeze
Class Method Summary collapse
-
.new_client(conn_params) ⇒ Object
In Rails 7.1+, new_client receives processed conn_params (user, dbname) not the raw config (username, database).
Class Method Details
.new_client(conn_params) ⇒ Object
In Rails 7.1+, new_client receives processed conn_params (user, dbname) not the raw config (username, database)
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/cloud_sql_ruby_connector/rails.rb', line 104 def new_client(conn_params) connector = CloudSQLRubyConnector::Rails.connector raise ConfigurationError, "CloudSQLRubyConnector::Rails.setup! not called" unless connector # conn_params already has :user and :dbname (processed by parent's initialize) cfg = if conn_params.respond_to?(:symbolize_keys) conn_params.symbolize_keys else conn_params.to_h.transform_keys(&:to_sym) end # Only pass through known PG connection options = cfg.slice(*ALLOWED_PG_OPTIONS) connector.connect( user: cfg[:user], password: cfg[:password], dbname: cfg[:dbname], ** ) end |