Sha256: 252b6625a9a0315ac8f2b42b5430be8b002263757c3b73ebac1454b8de14215b

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

namespace :data do

  DATA_MIGRATIONS_PATHS = ['db/data_tasks']

  desc 'Prevents existing data tasks from being run'
  task assume_migrated: :environment  do
    migrations_paths = DATA_MIGRATIONS_PATHS
    paths = migrations_paths.map {|p| "#{p}/[0-9]*_*.rb" }
    versions = Dir[*paths].map do |filename|
      filename.split('/').last.split('_').first.to_i
    end

    sm_table = ActiveRecord::Schema.quote_table_name(ActiveRecord::Migrator.schema_migrations_table_name)
    migrated = ActiveRecord::Schema.select_values("SELECT version FROM #{sm_table}").map { |v| v.to_i }
    versions_to_insert = (versions - migrated).uniq

    versions_to_insert.each do |version|
      ActiveRecord::Schema.execute "INSERT INTO #{sm_table} (version) VALUES ('#{version}')"
    end
  end

  desc 'Runs any data tasks that have not yet been executed.'
  task migrate: :environment do
    ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
    ActiveRecord::Migrator.migrate(DATA_MIGRATIONS_PATHS, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
data_tasks-0.2.0 lib/tasks/data_tasks.rake