jesseduffield / jesseduffield/lazy_migrate

[Tutorial] Using lazy_migrate with rails 7.1

Open
#66 0 comments 2 reactions 0 assignees View on GitHub
Dominant language
Ruby
Stars
211
Forks
9
PR merge metrics
No merged PRs in 30d

Description

It's been a long time since any update from this gem
And some internal/API/whatever changes in active record is making this gem unusable
I am here to share some monkey patches so you can use this gem with new rails versions

#### Rails 7.1
I use [`sane_patch`](https://github.com/Jcambass/sane_patch) to ensure I got error when this gem is updated
You can remove it entirely

````ruby
# config/initializers/lazy_migrate_monkey_patches.rb

require "lazy_migrate"

SanePatch.patch("lazy_migrate", "0.3.0") do
# Compatibility for rails 7
module LazyMigrate
# rubocop:disable Style/StaticClass
class Client
class << self
def run
migrator_adapter = MigratorAdapterFactory.create_migrator_adapter

loop do
catch(:done) do
on_done = -> { throw(:done) }

database_name = if ActiveRecord::Base.respond_to?(:connection_db_config)
# Rails 7
ActiveRecord::Base.connection_db_config.database
else
# Rails 6-
ActiveRecord::Base.connection_config[:database]
end
prompt.ok("\nDatabase: #{database_name}\n")

select_migration_prompt(on_done: on_done, migrator_adapter: migrator_adapter)
end
end
rescue TTY::Reader::InputInterrupt
puts
end
end
end

class MigratorAdapter
# From 0.3.0
def dump_schema
return if !ActiveRecord.dump_schema_after_migration

# ripped from https://github.com/rails/rails/blob/5-1-stable/activerecord/lib/active_record/railties/databases.rake
filename = ENV["SCHEMA"] || File.join(ActiveRecord::Tasks::DatabaseTasks.db_dir, "schema.rb")
File.open(filename, "w:utf-8") do |file|
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
end
end
end
# rubocop:enable Style/StaticClass
end
end

````

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.