mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-31 02:57:57 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # 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.config)
 | |
|       # handling case where database was created by the provider, with out running db:setup
 | |
|       unless ActiveRecord::Base.connection.table_exists? 'ar_internal_metadata'
 | |
|         db_namespace['load_config'].invoke if ActiveRecord::Base.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
 | 
