Restructure omni services and add Chatwoot research snapshot
This commit is contained in:
31
research/chatwoot/lib/tasks/db_enhancements.rake
Normal file
31
research/chatwoot/lib/tasks/db_enhancements.rake
Normal file
@@ -0,0 +1,31 @@
|
||||
# We are hooking config loader to run automatically everytime migration is executed
|
||||
Rake::Task['db:migrate'].enhance do
|
||||
if ActiveRecord::Base.connection.table_exists? 'installation_configs'
|
||||
puts 'Loading Installation config'
|
||||
ConfigLoader.new.process
|
||||
end
|
||||
end
|
||||
|
||||
# we are creating a custom database prepare task
|
||||
# the default rake db:prepare task isn't ideal for environments like heroku
|
||||
# In heroku the database is already created before the first run of db:prepare
|
||||
# In this case rake db:prepare tries to run db:migrate from all the way back from the beginning
|
||||
# Since the assumption is migrations are only run after schema load from a point x, this could lead to things breaking.
|
||||
# ref: https://github.com/rails/rails/blob/main/activerecord/lib/active_record/railties/databases.rake#L356
|
||||
db_namespace = namespace :db do
|
||||
desc 'Runs setup if database does not exist, or runs migrations if it does'
|
||||
task chatwoot_prepare: :load_config do
|
||||
ActiveRecord::Base.configurations.configs_for(env_name: Rails.env).each do |db_config|
|
||||
ActiveRecord::Base.establish_connection(db_config.configuration_hash)
|
||||
unless ActiveRecord::Base.connection.table_exists? 'ar_internal_metadata'
|
||||
db_namespace['load_config'].invoke if ActiveRecord.schema_format == :ruby
|
||||
ActiveRecord::Tasks::DatabaseTasks.load_schema_current(:ruby, ENV.fetch('SCHEMA', nil))
|
||||
db_namespace['seed'].invoke
|
||||
end
|
||||
|
||||
db_namespace['migrate'].invoke
|
||||
rescue ActiveRecord::NoDatabaseError
|
||||
db_namespace['setup'].invoke
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user