Module: CaptureMigrationSql

Defined in:
lib/capture_migration_sql/sql_subscriber.rb,
lib/capture_migration_sql.rb,
lib/capture_migration_sql/version.rb,
lib/capture_migration_sql/migration_extension.rb

Overview

Extension methods for ActiveRecord::Migration class.

Defined Under Namespace

Modules: MigrationExtension Classes: SqlSubscriber

Constant Summary collapse

VERSION =
File.read(File.join(__dir__, "..", "..", "VERSION"))

Class Method Summary collapse

Class Method Details

.capture(directory: nil, starting_with: 0) ⇒ Object

Call this method in an initializer to invoke dumping the SQL executed during migrations in to a file.

The ‘directory` argument indicates the directory where the files should be stored. If the directory is not specified, the files will be stored in `db/migration_sql/`.

The ‘starting_with` argument can be used to specify which migration you wish to start capturing SQL with. This can be useful if you are adding this gem to an existing project with a history of migrations that you don’t want to go back and edit.



17
18
19
20
21
22
23
# File 'lib/capture_migration_sql.rb', line 17

def capture(directory: nil, starting_with: 0)
  unless ::ActiveRecord::Migration.include?(MigrationExtension)
    ::ActiveRecord::Migration.prepend(MigrationExtension)
  end
  @sql_directory = (directory || Rails.root + "db" + "migration_sql")
  @starting_with_version = starting_with.to_i
end

.capture_enabled?Boolean

Return true if capturing SQL is enabled for migrations.

Returns:

  • (Boolean)


36
37
38
# File 'lib/capture_migration_sql.rb', line 36

def capture_enabled?
  !!Thread.current[:capture_migration_sql_enabled]
end

.capture_streamObject

Return the strema migration SQL is being written to.



41
42
43
# File 'lib/capture_migration_sql.rb', line 41

def capture_stream
  Thread.current[:capture_migration_sql_stream]
end

.directoryObject

Return the directory set by ‘capture_sql` for storing migration SQL.



26
27
28
# File 'lib/capture_migration_sql.rb', line 26

def directory
  @sql_directory if defined?(@sql_directory)
end

.starting_with_versionObject

Return the migration version number to start capaturing SQL.



31
32
33
# File 'lib/capture_migration_sql.rb', line 31

def starting_with_version
  @starting_with_version if defined?(@starting_with_version)
end