36 lines
1.2 KiB
Ruby
36 lines
1.2 KiB
Ruby
|
namespace :gitlab do
|
||
|
namespace :db do
|
||
|
desc 'GitLab | Manually insert schema migration version'
|
||
|
task :mark_migration_complete, [:version] => :environment do |_, args|
|
||
|
unless args[:version]
|
||
|
puts "Must specify a migration version as an argument".red
|
||
|
exit 1
|
||
|
end
|
||
|
|
||
|
version = args[:version].to_i
|
||
|
if version == 0
|
||
|
puts "Version '#{args[:version]}' must be a non-zero integer".red
|
||
|
exit 1
|
||
|
end
|
||
|
|
||
|
sql = "INSERT INTO schema_migrations (version) VALUES (#{version})"
|
||
|
begin
|
||
|
ActiveRecord::Base.connection.execute(sql)
|
||
|
puts "Successfully marked '#{version}' as complete".green
|
||
|
rescue ActiveRecord::RecordNotUnique
|
||
|
puts "Migration version '#{version}' is already marked complete".yellow
|
||
|
end
|
||
|
end
|
||
|
|
||
|
desc 'Drop all tables'
|
||
|
task :drop_tables => :environment do
|
||
|
connection = ActiveRecord::Base.connection
|
||
|
tables = connection.tables
|
||
|
tables.delete 'schema_migrations'
|
||
|
# Truncate schema_migrations to ensure migrations re-run
|
||
|
connection.execute('TRUNCATE schema_migrations')
|
||
|
tables.each { |t| connection.execute("DROP TABLE #{t}") }
|
||
|
end
|
||
|
end
|
||
|
end
|