class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter

def create_enum(name, values)

Given a name and an array of values, creates an enum type.
def create_enum(name, values)
  sql_values = values.map { |s| "'#{s}'" }.join(", ")
  query = <<~SQL
    DO $$
    BEGIN
        IF NOT EXISTS (
          SELECT 1 FROM pg_type t
          WHERE t.typname = '#{name}'
        ) THEN
            CREATE TYPE \"#{name}\" AS ENUM (#{sql_values});
        END IF;
    END
    $$;
  SQL
  exec_query(query)
end