module LoadBalancerRouting extend ActiveSupport::Concern ALLOWED_PRAGMAS = %w[ beamer_primary beamer_last_txn ] included do before_action :set_target_header, :set_writer_header after_action :set_transaction_cookie end private def set_target_header response.headers["X-Kamal-Target"] = request.headers["X-Kamal-Target"] end def set_writer_header if ApplicationRecord.current_tenant.present? response.headers["X-Writer"] = pragma("beamer_primary") end end def set_transaction_cookie unless safe_request? if ApplicationRecord.current_tenant.present? && Account.sole.present? cookies[:last_transaction] = { value: pragma("beamer_last_txn"), path: Account.sole.slug } end end end def pragma(name) if ALLOWED_PRAGMAS.include?(name) ApplicationRecord.connection.execute("pragma #{name}").first&.values&.first end end def safe_request? request.get? || request.head? end end