Module: Lhm

Defined in:
lib/lhm.rb,
lib/lhm/table.rb,
lib/lhm/chunker.rb,
lib/lhm/command.rb,
lib/lhm/invoker.rb,
lib/lhm/version.rb,
lib/lhm/migrator.rb,
lib/lhm/entangler.rb,
lib/lhm/migration.rb,
lib/lhm/sql_helper.rb,
lib/lhm/intersection.rb,
lib/lhm/locked_switcher.rb

Overview

Copyright © 2011, SoundCloud Ltd., Rany Keddo, Tobias Bielohlawek, Tobias Schmidt

Defined Under Namespace

Modules: Command, SqlHelper Classes: Chunker, Entangler, Error, Intersection, Invoker, LockedSwitcher, Migration, Migrator, Table

Constant Summary collapse

VERSION =
"1.0.2"

Class Method Summary collapse

Class Method Details

.change_table(table_name, chunk_options = {}) {|Migrator| ... } ⇒ Boolean

Alters a table with the changes described in the block

Parameters:

  • table_name (String, Symbol)

    Name of the table

  • chunk_options (Hash) (defaults to: {})

    Optional options to alter the chunk behavior

Options Hash (chunk_options):

  • :stride (Fixnum)

    Size of a chunk (defaults to: 40,000)

  • :throttle (Fixnum)

    Time to wait between chunks in milliseconds (defaults to: 100)

Yields:

  • (Migrator)

    Yielded Migrator object records the changes

Returns:

  • (Boolean)

    Returns true if the migration finishes

Raises:

  • (Error)

    Raises Lhm::Error in case of a error and aborts the migration



32
33
34
35
36
37
38
39
40
# File 'lib/lhm.rb', line 32

def self.change_table(table_name, chunk_options = {}, &block)
  connection = ActiveRecord::Base.connection
  origin = Table.parse(table_name, connection)
  invoker = Invoker.new(origin, connection)
  block.call(invoker.migrator)
  invoker.run(chunk_options)

  true
end