module Sequel

Public Class Methods

activerecord(model = nil, **options) click to toggle source
# File lib/sequel-activerecord-adapter.rb, line 7
def self.activerecord(model = nil, **options)
  model ||= ::ActiveRecord::Base

  activerecord_adapter = model.connection_config.fetch(:adapter)

  case activerecord_adapter
  when "postgresql" then adapter ||= :postgres
  when "mysql2"     then adapter ||= :mysql2
  when "sqlite3"    then adapter ||= :sqlite
  else
    raise Sequel::ActiveRecord::Error, "unsupported adapter: #{activerecord_adapter}"
  end

  db = connect(
    adapter:            adapter,
    activerecord_model: model,
    pool_class:         Sequel::ConnectionPool, # fake connection pool
    test:               false, # don't force ActiveRecord connection
    **options,
  )

  # general database extensions
  db.extend Sequel::ActiveRecord::DatabaseMethods

  # adapter-specific database extensions
  Kernel.require "sequel/adapters/activerecord/#{activerecord_adapter}"
  adapter_module = Sequel::ActiveRecord.const_get(activerecord_adapter.capitalize)
  db.extend adapter_module::DatabaseMethods

  db
end