class Sequel::Seeder

Constants

Error
JSON_SEED_FILE_PATTERN
MINIMUM_TIMESTAMP
RUBY_SEED_FILE_PATTERN
SEED_FILE_PATTERN
SEED_SPLITTER
YAML_SEED_FILE_PATTERN

Attributes

column[R]
db[R]
directory[R]
ds[R]
files[R]
table[R]

Public Class Methods

apply(db, directory, opts = {}) click to toggle source
# File lib/sequel/extensions/seed.rb, line 207
def self.apply(db, directory, opts = {})
  seeder_class(directory).new(db, directory, opts).run
end
new(db, directory, opts = {}) click to toggle source
# File lib/sequel/extensions/seed.rb, line 235
def initialize(db, directory, opts = {})
  raise(Error, "Must supply a valid seed path") unless File.directory?(directory)
  @db = db
  @directory = directory
  @allow_missing_seed_files = opts[:allow_missing_seed_files]
  @files = get_seed_files
  schema, table = @db.send(:schema_and_table, opts[:table]  || self.class.const_get(:DEFAULT_SCHEMA_TABLE))
  @table = schema ? Sequel::SQL::QualifiedIdentifier.new(schema, table) : table
  @column = opts[:column] || self.class.const_get(:DEFAULT_SCHEMA_COLUMN)
  @ds = schema_dataset
  @use_transactions = opts[:use_transactions]
end
seeder_class(directory) click to toggle source
# File lib/sequel/extensions/seed.rb, line 211
def self.seeder_class(directory)
  if self.equal?(Seeder)
    Dir.new(directory).each do |file|
      next unless SEED_FILE_PATTERN.match(file)
      return TimestampSeeder if file.split(SEED_SPLITTER, 2).first.to_i > MINIMUM_TIMESTAMP
    end
    raise(Error, "seeder not available for files; please check the configured seed directory \"#{directory}\". Also ensure seed files are in YYYYMMDD_seed_file.rb format.")
  else
    self
  end
end

Private Instance Methods

checked_transaction(seed) { || ... } click to toggle source
# File lib/sequel/extensions/seed.rb, line 250
def checked_transaction(seed, &block)
  use_trans = if @use_transactions.nil?
    @db.supports_transactional_ddl?
  else
    @use_transactions
  end

  if use_trans
    db.transaction(&block)
  else
    yield
  end
end
remove_seed_classes() click to toggle source
# File lib/sequel/extensions/seed.rb, line 264
def remove_seed_classes
  Seed::Base.descendants.each do |c|
    Object.send(:remove_const, c.to_s) rescue nil
  end
  Seed::Base.descendants.clear
end
seed_version_from_file(filename) click to toggle source
# File lib/sequel/extensions/seed.rb, line 271
def seed_version_from_file(filename)
  filename.split(SEED_SPLITTER, 2).first.to_i
end