Class: SequelRails3::Railtie

Inherits:
Rails::Railtie
  • Object
show all
Defined in:
lib/sequel_rails3/railtie.rb

Class Method Summary collapse

Class Method Details

.migrate_to(version) ⇒ Object



39
40
41
# File 'lib/sequel_rails3/railtie.rb', line 39

def self.migrate_to(version)
  Sequel::IntegerMigrator.apply(db, File.join(Rails.root, 'db', 'migrate'), version)
end

.migratorObject



35
36
37
# File 'lib/sequel_rails3/railtie.rb', line 35

def self.migrator
  Sequel::IntegerMigrator.new(db, File.join(Rails.root, 'db', 'migrate'))
end

.read_schemaObject

Raises:

  • (RuntimeError)


66
67
68
69
70
71
# File 'lib/sequel_rails3/railtie.rb', line 66

def self.read_schema
  data = File.read(schema_file)
  version = data.match(/# Database schema version: (\d+)\n/)[1]
  raise RuntimeError, "unable to determine schema version from schema file" unless version
  [data, version.to_i]
end

.schema(action) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/sequel_rails3/railtie.rb', line 43

def self.schema(action)
  case action
    when :dump
      File.open(schema_file, "w") do |f|
        f.write("# Database schema version: #{migrator.current}\n")
        f.write(db.dump_schema_migration)
      end
    when :up
      migration, version = read_schema
      eval(migration).apply(db, :up)
      db[:schema_info].insert(:version => version)
    when :down
      migration = db.dump_schema_migration
      eval(migration).apply(db, :down)
    else
      raise ArgumentError, "invalid schema action '#{action}'"
  end
end

.schema_fileObject



62
63
64
# File 'lib/sequel_rails3/railtie.rb', line 62

def self.schema_file
  File.join(Rails.root, 'db', 'schema.rb')
end