class Sql::Migrations::Rails::Railtie
Public Instance Methods
delete_extra_migrations!()
click to toggle source
# File lib/sql/migrations/rails/railtie.rb, line 43 def delete_extra_migrations! tmp_migrations_path.children.select { |x| sql_migrations.keys.exclude?(x.basename('.rb')) }.each(&:delete) end
generate_tmp_migrations!()
click to toggle source
# File lib/sql/migrations/rails/railtie.rb, line 47 def generate_tmp_migrations! template = File.read(File.join(File.dirname(__FILE__), 'templates/migration.rb.tt')) modified_sql_migrations.each do |name, paths| erb_hash = { migration_class_name: name.to_s.split('_', 2).second.camelize, up_migration: paths.find { |x| x.to_s.end_with?('.up.sql') }, down_migration: paths.find { |x| x.to_s.end_with?('.down.sql') } } erb_result = ERB.new(template, nil, '-').result_with_hash(erb_hash) Pathname(tmp_migrations_path.join("#{name}.rb")).write(erb_result) end end
last_update()
click to toggle source
Data about the previous files state This is needed for rebuild only modified temporary migrations
# File lib/sql/migrations/rails/railtie.rb, line 19 def last_update @last_update ||= begin file = ::Rails.root.join(Sql::Migrations::Rails::LAST_UPDATE_FILE).tap { |x| x.dirname.mkpath } file.file? ? JSON.parse(file.read).transform_keys(&:to_sym) : { timestamp: '0', files: {} } end end
modified_sql_migrations()
click to toggle source
# File lib/sql/migrations/rails/railtie.rb, line 35 def modified_sql_migrations @modified_sql_migrations ||= sql_migrations.select do |name, paths| last_update[:files][name.to_s] != paths.map { |x| x.to_s.split('.')[-2] } || paths.map { |x| [x.mtime, x.ctime] }.flatten.map(&:utc) .max.strftime('%Y%m%d%H%M%S') > last_update[:timestamp] end end
sql_migrations()
click to toggle source
# File lib/sql/migrations/rails/railtie.rb, line 30 def sql_migrations @sql_migrations ||= ::Rails.root.join('db/migrate').glob('*.{up,down}.sql') .group_by { |x| x.basename('.up.sql').basename('.down.sql') } end
tmp_migrations_path()
click to toggle source
# File lib/sql/migrations/rails/railtie.rb, line 26 def tmp_migrations_path @tmp_migrations_path ||= ::Rails.root.join(Sql::Migrations::Rails::TMP_MIGRATIONS_FOLDER).tap(&:mkpath) end
update_data_file!()
click to toggle source
# File lib/sql/migrations/rails/railtie.rb, line 61 def update_data_file! data = { timestamp: Time.now.utc.strftime('%Y%m%d%H%M%S'), files: sql_migrations.transform_values { |x1| x1.map { |x2| x2.to_s.split('.')[-2] } } }.to_json ::Rails.root.join(Sql::Migrations::Rails::LAST_UPDATE_FILE).write(data) end
update_rails_migration_paths!()
click to toggle source
# File lib/sql/migrations/rails/railtie.rb, line 70 def update_rails_migration_paths! ::Rails.application.config.paths['db/migrate'] << Sql::Migrations::Rails::TMP_MIGRATIONS_FOLDER end