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