24 lines
		
	
	
	
		
			514 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			514 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module DatabaseHelper
 | 
						|
  def replica_enabled?
 | 
						|
    ENV['REPLICA_DB_NAME'] || ENV.fetch('REPLICA_DATABASE_URL', nil)
 | 
						|
  end
 | 
						|
  module_function :replica_enabled?
 | 
						|
 | 
						|
  def with_read_replica(&block)
 | 
						|
    if replica_enabled?
 | 
						|
      ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block)
 | 
						|
    else
 | 
						|
      yield
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def with_primary(&block)
 | 
						|
    if replica_enabled?
 | 
						|
      ApplicationRecord.connected_to(role: :writing, &block)
 | 
						|
    else
 | 
						|
      yield
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |