Top level module for Sequel
There are some class methods that are added via metaprogramming, one for each supported adapter. For example:
DB = Sequel.sqlite # Memory database DB = Sequel.sqlite('blog.db') DB = Sequel.postgres('database_name', :user=>'user', :password=>'password', :host=>'host', :port=>5432, :max_connections=>10)
If a block is given to these methods, it is passed the opened Database object, which is closed (disconnected) when the block exits. For example:
Sequel.sqlite('blog.db'){|db| puts db.users.count}
Sequel converts the column type tinyint to a boolean by default, you can override the conversion to use tinyint as an integer:
Sequel.convert_tinyint_to_bool = false
Sequel converts two digit years in Dates and DateTimes by default, so 01/02/03 is interpreted at January 2nd, 2003, and 12/13/99 is interpreted as December 13, 1999.. You can override this # to treat those dates as January 2nd, 0003 and December 13, 0099, respectively, by setting:
Sequel.convert_two_digit_years = false
Sequel can use either Time or DateTime for times returned from the database. It defaults to Time. To change it to DateTime, use:
Sequel.datetime_class = DateTime
SELECT_SERIAL_SEQUENCE | = | proc do |schema, table| <<-end_sql SELECT '"' || name.nspname || '"."' || seq.relname || '"' FROM pg_class seq, pg_attribute attr, pg_depend dep, pg_namespace name, pg_constraint cons WHERE seq.oid = dep.objid AND seq.relnamespace = name.oid AND seq.relkind = 'S' AND attr.attrelid = dep.refobjid AND attr.attnum = dep.refobjsubid AND attr.attrelid = cons.conrelid AND attr.attnum = cons.conkey[1] AND cons.contype = 'p' #{"AND name.nspname = '#{schema}'" if schema} AND seq.relname = '#{table}' end_sql | ||
DATABASES | = | [] | Array of all databases to which Sequel has connected. If you are developing an application that can connect to an arbitrary number of databases, delete the database objects from this or they will not get garbage collected. | |
MAJOR | = | 2 | ||
MINOR | = | 10 | ||
TINY | = | 0 | ||
VERSION | = | [MAJOR, MINOR, TINY].join('.') |
Lets you create a Model subclass with its dataset already set. source can be an existing dataset or a symbol (in which case it will create a dataset using the default database with source as the table name).
Example:
class Comment < Sequel::Model(:something) table_name # => :something end
# File lib/sequel_model.rb, line 22 22: def self.Model(source) 23: @models[source] ||= Class.new(Model).set_dataset(source) 24: end
Creates a new database object based on the supplied connection string and optional arguments. The specified scheme determines the database class used, and the rest of the string specifies the connection options. For example:
DB = Sequel.connect('sqlite:/') # Memory database DB = Sequel.connect('sqlite://blog.db') # ./blog.db DB = Sequel.connect('sqlite:///blog.db') # /blog.db DB = Sequel.connect('postgres://user:password@host:port/database_name') DB = Sequel.connect('sqlite:///blog.db', :max_connections=>10)
If a block is given, it is passed the opened Database object, which is closed when the block exits. For example:
Sequel.connect('sqlite://blog.db'){|db| puts db.users.count}
This is also aliased as Sequel.open.
# File lib/sequel_core.rb, line 67 67: def self.connect(*args, &block) 68: Database.connect(*args, &block) 69: end
Set the method to call on identifiers going into the database. This affects the literalization of identifiers by calling this method on them before they are input. Sequel upcases identifiers in all SQL strings for most databases, so to turn that off:
Sequel.identifier_input_method = nil
to downcase instead:
Sequel.identifier_input_method = :downcase
Other string methods work as well.
# File lib/sequel_core.rb, line 83 83: def self.identifier_input_method=(value) 84: Database.identifier_input_method = value 85: end
Set the method to call on identifiers coming out of the database. This affects the literalization of identifiers by calling this method on them when they are retrieved from the database. Sequel downcases identifiers retrieved for most databases, so to turn that off:
Sequel.identifier_output_method = nil
to upcase instead:
Sequel.identifier_output_method = :upcase
Other string methods work as well.
# File lib/sequel_core.rb, line 99 99: def self.identifier_output_method=(value) 100: Database.identifier_output_method = value 101: end
Allowing loading the necessary JDBC support via a gem, which works for PostgreSQL, MySQL, and SQLite.
# File lib/sequel_core/adapters/jdbc.rb, line 75 75: def self.load_gem(name) 76: begin 77: require "jdbc/#{name}" 78: rescue LoadError 79: # jdbc gem not used, hopefully the user has the .jar in their CLASSPATH 80: end 81: end
Set whether to set the single threaded mode for all databases by default. By default, Sequel uses a threadsafe connection pool, which isn‘t as fast as the single threaded connection pool. If your program will only have one thread, and speed is a priority, you may want to set this to true:
Sequel.single_threaded = true
# File lib/sequel_core.rb, line 117 117: def self.single_threaded=(value) 118: Database.single_threaded = value 119: end
Set whether to upcase identifiers for all databases by default. By default, Sequel upcases identifiers unless the database folds unquoted identifiers to lower case (MySQL, PostgreSQL, and SQLite).
Sequel.upcase_identifiers = false
This will set the indentifier_input_method to :upcase if value is true or nil if value is false.
# File lib/sequel_core.rb, line 129 129: def self.upcase_identifiers=(value) 130: Database.upcase_identifiers = value 131: end
Always returns false, since ParseTree support has been removed.
# File lib/sequel_core.rb, line 134 134: def self.use_parse_tree 135: false 136: end