Module: Sequel

Defined in:
lib/sequel.rb,
lib/sequel/model.rb,
lib/sequel/model.rb,
lib/sequel/schema.rb,
lib/sequel/worker.rb,
lib/sequel/dataset.rb,
lib/sequel/core_ext.rb,
lib/sequel/core_sql.rb,
lib/sequel/core_sql.rb,
lib/sequel/database.rb,
lib/sequel/migration.rb,
lib/sequel/array_keys.rb,
lib/sequel/exceptions.rb,
lib/sequel/model/base.rb,
lib/sequel/dataset/sql.rb,
lib/sequel/model/hooks.rb,
lib/sequel/adapters/ado.rb,
lib/sequel/adapters/db2.rb,
lib/sequel/adapters/dbi.rb,
lib/sequel/model/record.rb,
lib/sequel/model/schema.rb,
lib/sequel/pretty_table.rb,
lib/sequel/adapters/jdbc.rb,
lib/sequel/adapters/odbc.rb,
lib/sequel/model/caching.rb,
lib/sequel/model/plugins.rb,
lib/sequel/adapters/oracle.rb,
lib/sequel/adapters/sqlite.rb,
lib/sequel/connection_pool.rb,
lib/sequel/model/relations.rb,
lib/sequel/adapters/informix.rb,
lib/sequel/adapters/openbase.rb,
lib/sequel/adapters/postgres.rb,
lib/sequel/model/validations.rb,
lib/sequel/schema/schema_sql.rb,
lib/sequel/adapters/odbc_mssql.rb,
lib/sequel/dataset/convenience.rb,
lib/sequel/schema/schema_generator.rb,
lib/sequel/adapters/adapter_skeleton.rb,
lib/sequel/adapters/mysql.rb

Overview

require ‘adapter_lib’

Defined Under Namespace

Modules: ADO, Adapter, DB2, DBI, Informix, JDBC, Migrator, MySQL, NumericExtensions, ODBC, OpenBase, Oracle, Plugins, Postgres, PrettyTable, SQL, SQLite, Schema Classes: ConnectionPool, Database, Dataset, Error, LiteralString, Migration, Model, SingleThreadedPool, Worker

Class Method Summary collapse

Class Method Details

.connect(*args) ⇒ Object Also known as: open

call-seq:

Sequel::Database.connect(conn_string)
Sequel.connect(conn_string)
Sequel.open(conn_string)

Creates a new database object based on the supplied connection string. The specified scheme determines the database class used, and the rest of the string specifies the connection options. For example:

DB = Sequel.open 'sqlite:///blog.db'


23
24
25
# File 'lib/sequel.rb', line 23

def connect(*args)
  Database.connect(*args)
end

.method_missing(m, *args) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/sequel.rb', line 32

def method_missing(m, *args)
  c = Database.adapter_class(m)
  begin
    # three ways to invoke this:
    # 0 arguments: Sequel.dbi 
    # 1 argument:  Sequel.dbi(db_name)
    # more args:   Sequel.dbi(db_name, opts)
    case args.size
    when 0
      opts = {}
    when 1
      opts = args[0].is_a?(Hash) ? args[0] : {:database => args[0]}
    else
      opts = args[1].merge(:database => args[0])
    end
  rescue
    raise Error, "Unknown adapter (#{m})"
  end
  c.new(opts)
end

.Model(source) ⇒ Object

Lets you create a Model class with its table name already set or reopen an existing Model.

Makes given dataset inherited.

Example:

class Comment < Sequel::Model(:comments)
  table_name # => :comments

  # ...

end


88
89
90
91
92
93
94
95
# File 'lib/sequel/model/base.rb', line 88

def self.Model(source)
  @models ||= {}
  @models[source] ||= Class.new(Sequel::Model) do
    meta_def(:inherited) do |c|
      c.set_dataset(source.is_a?(Dataset) ? source : c.db[source])
    end
  end
end

.single_threaded=(value) ⇒ Object



28
29
30
# File 'lib/sequel.rb', line 28

def single_threaded=(value)
  Database.single_threaded = value
end

.use_array_tuplesObject

Modifies all dataset classes to fetch records as arrays with keys. By default records are fetched as hashes.



260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
# File 'lib/sequel/array_keys.rb', line 260

def self.use_array_tuples
  Dataset.dataset_classes.each do |c|
    c.class_eval do
      if method_defined?(:array_tuples_fetch_rows)
        alias_method :hash_tuples_fetch_rows, :fetch_rows
        alias_method :fetch_rows, :array_tuples_fetch_rows
      else
        alias_method :orig_each, :each
        alias_method :orig_update_each_method, :update_each_method
        include ArrayKeys::DatasetExtensions
        alias_method :each, :array_tuples_each
        alias_method :update_each_method, :array_tuples_update_each_method
      end
    end
  end
end

.use_hash_tuplesObject

Modifies all dataset classes to fetch records as hashes.



278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
# File 'lib/sequel/array_keys.rb', line 278

def self.use_hash_tuples
  Dataset.dataset_classes.each do |c|
    c.class_eval do
      if method_defined?(:hash_tuples_fetch_rows)
        alias_method :fetch_rows, :hash_tuples_fetch_rows
      else
        if method_defined?(:orig_each)
          alias_method :each, :orig_each
          undef_method :orig_each
        end
        if method_defined?(:orig_update_each_method)
          alias_method :update_each_method, :orig_update_each_method
          undef_method :orig_update_each_method
        end
      end
    end
  end
end