class ConflictFreeSchema::Database::SchemaVersionFiles
Constants
- MIGRATION_DIRECTORIES
- MIGRATION_VERSION_GLOB
- SCHEMA_DIRECTORY
Public Class Methods
connection()
click to toggle source
# File lib/conflict_free_schema/database/schema_version_files.rb, line 67 def self.connection ActiveRecord::Base.connection end
find_version_filenames()
click to toggle source
# File lib/conflict_free_schema/database/schema_version_files.rb, line 50 def self.find_version_filenames Dir.glob(MIGRATION_VERSION_GLOB, base: schema_directory) end
find_versions_from_migration_files()
click to toggle source
# File lib/conflict_free_schema/database/schema_version_files.rb, line 58 def self.find_versions_from_migration_files migration_directories.each_with_object([]) do |directory, migration_versions| directory_migrations = Dir.glob(MIGRATION_VERSION_GLOB, base: directory) directory_versions = directory_migrations.map! { |m| m.split('_').first } migration_versions.concat(directory_versions) end end
init_schema_directory()
click to toggle source
# File lib/conflict_free_schema/database/schema_version_files.rb, line 54 def self.init_schema_directory FileUtils.mkdir_p(schema_directory) end
load_all()
click to toggle source
# File lib/conflict_free_schema/database/schema_version_files.rb, line 29 def self.load_all init_schema_directory version_filenames = find_version_filenames return if version_filenames.empty? values = version_filenames.map { |vf| "('#{connection.quote_string(vf)}')" } connection.execute(<<~SQL) INSERT INTO schema_migrations (version) VALUES #{values.join(',')} ON CONFLICT DO NOTHING SQL end
migration_directories()
click to toggle source
# File lib/conflict_free_schema/database/schema_version_files.rb, line 46 def self.migration_directories @migration_directories ||= MIGRATION_DIRECTORIES.map { |dir| Rails.root.join(dir) } end
schema_directory()
click to toggle source
# File lib/conflict_free_schema/database/schema_version_files.rb, line 42 def self.schema_directory @schema_directory ||= Rails.root.join(SCHEMA_DIRECTORY) end
touch_all(versions_from_database)
click to toggle source
# File lib/conflict_free_schema/database/schema_version_files.rb, line 12 def self.touch_all(versions_from_database) init_schema_directory versions_from_migration_files = find_versions_from_migration_files version_filepaths = find_version_filenames.map { |f| schema_directory.join(f) } FileUtils.rm(version_filepaths) versions_to_create = versions_from_database & versions_from_migration_files versions_to_create.each do |version| version_filepath = schema_directory.join(version) File.open(version_filepath, 'w') do |file| file << Digest::SHA256.hexdigest(version) end end end