Class: SequelRails::Migrations

Inherits:
Object
  • Object
show all
Defined in:
lib/sequel_rails/migrations.rb

Class Method Summary collapse

Class Method Details

.available_migrations?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/sequel_rails/migrations.rb', line 70

def available_migrations?
  File.exist?(migrations_dir) && Dir[File.join(migrations_dir, '*')].any?
end

.current_migrationObject



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/sequel_rails/migrations.rb', line 46

def current_migration
  return unless available_migrations?

  migrator_class = ::Sequel::Migrator.send(:migrator_class, migrations_dir)
  migrator = migrator_class.new ::Sequel::Model.db, migrations_dir
  if migrator.respond_to?(:applied_migrations)
    migrator.applied_migrations.last
  elsif migrator.respond_to?(:current_version)
    migrator.current_version
  end
end

.dump_schema_information(opts = {}) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/sequel_rails/migrations.rb', line 19

def dump_schema_information(opts = {})
  sql = opts.fetch :sql
  db = ::Sequel::Model.db
  res = ''

  if available_migrations?
    migrator_class = ::Sequel::Migrator.send(:migrator_class, migrations_dir)
    migrator = migrator_class.new db, migrations_dir

    inserts = migrator.ds.map do |hash|
      insert = migrator.ds.insert_sql(hash)
      sql ? "#{insert};" : "    self << #{insert.inspect}"
    end

    if inserts.any?
      res << "Sequel.migration do\n  change do\n" unless sql
      res << inserts.join("\n")
      res << "\n  end\nend\n" unless sql
    end
  end
  res
end

.migrate(version = nil) ⇒ Object Also known as: migrate_up!, migrate_down!



6
7
8
9
10
# File 'lib/sequel_rails/migrations.rb', line 6

def migrate(version = nil)
  opts = {}
  opts[:target] = version.to_i if version
  ::Sequel::Migrator.run(::Sequel::Model.db, migrations_dir, opts)
end

.migrations_dirObject



42
43
44
# File 'lib/sequel_rails/migrations.rb', line 42

def migrations_dir
  Rails.root.join('db/migrate')
end

.pending_migrations?Boolean

Returns:

  • (Boolean)


14
15
16
17
# File 'lib/sequel_rails/migrations.rb', line 14

def pending_migrations?
  return false unless available_migrations?
  !::Sequel::Migrator.is_current?(::Sequel::Model.db, migrations_dir)
end

.previous_migrationObject



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/sequel_rails/migrations.rb', line 58

def previous_migration
  return unless available_migrations?

  migrator_class = ::Sequel::Migrator.send(:migrator_class, migrations_dir)
  migrator = migrator_class.new ::Sequel::Model.db, migrations_dir
  if migrator.respond_to?(:applied_migrations)
    migrator.applied_migrations[-2] || '0'
  elsif migrator.respond_to?(:current_version)
    migrator.current_version - 1
  end
end