Module: Extort

Includes:
Rake::DSL
Defined in:
lib/extort.rb,
lib/extort/version.rb

Overview

Extort

Constant Summary collapse

NO_VERSION_FOUND =

Constants

"no version found"
DB_MIGRATIONS_DIR =
"db"
VERSION =
"0.2.3"

Class Method Summary collapse

Class Method Details

.add_migration(name) ⇒ String

Add a new migration file

Returns:

  • (String)

    file path



88
89
90
91
# File 'lib/extort.rb', line 88

def add_migration name
  argument_error(name)
  FileUtils.touch filename(name)
end

.initBoolean

Setup new extort env.

Returns:

  • (Boolean)


97
98
99
100
101
102
103
104
# File 'lib/extort.rb', line 97

def init
  if Dir.exists?(DB_MIGRATIONS_DIR)
    "#{DB_MIGRATIONS_DIR} directory already exists"
  else
    FileUtils.mkdir_p(DB_MIGRATIONS_DIR)
    "#{DB_MIGRATIONS_DIR} directory created"
  end
end

.install_tasksObject

Install rake tasks (from other gems or apps)



121
122
123
124
125
# File 'lib/extort.rb', line 121

def install_tasks

  # import tasks
  import "#{spec_directory}/lib/tasks/database.rake"
end

.migrateVoid

Execute pending migrations

Returns:

  • (Void)


72
73
74
# File 'lib/extort.rb', line 72

def migrate
  Sequel::Migrator.run $DB, File.join(pwd, DB_MIGRATIONS_DIR)
end

.pwdString

Get current working directiry

Returns:

  • (String)

    current directory



27
28
29
# File 'lib/extort.rb', line 27

def pwd
  Dir.pwd
end

.rollback(step) ⇒ Void

Rollback migration

Returns:

  • (Void)


79
80
81
82
83
# File 'lib/extort.rb', line 79

def rollback step
  argument_error(step)
  Sequel::Migrator.run $DB, File.join(pwd, DB_MIGRATIONS_DIR), \
    target: step.to_i
end

.schema_table?Boolean

Check for schema table

Returns:

  • (Boolean)


34
35
36
# File 'lib/extort.rb', line 34

def schema_table?
  $DB.tables.include?(:schema_migrations)
end

.schema_versionString

Get schema version

Returns:

  • (String)

    version of schema



41
42
43
44
45
46
47
48
# File 'lib/extort.rb', line 41

def schema_version
  if schema_table?
    version_from_field \
      $DB[:schema_migrations].order(:filename).last
  else
    NO_VERSION_FOUND
  end
end

.schema_versionsArray

Print all versions

Returns:

  • (Array)

    with versions



53
54
55
56
57
# File 'lib/extort.rb', line 53

def schema_versions
  $DB[:schema_migrations].map do |record|
    version_from_field(record)
  end
end

.spec_directoryString

Return directory of gem.

Returns:

  • (String)

    path to gem directory



110
111
112
113
114
115
116
# File 'lib/extort.rb', line 110

def spec_directory
  @spec_directory ||= \

    Gem::Specification
      .find_by_name(self.to_s.downcase)
      .gem_dir
end

.version_from_field(record) ⇒ String

Version from database column

Parameters:

  • record (Hash)

    raw database record

Returns:

  • (String)

    timestamp



63
64
65
66
67
# File 'lib/extort.rb', line 63

def version_from_field record
  unless record.nil?
    record[:filename].split("_").first
  end
end