if ENV['REDIS_ACCESS_MODE'] == 'readonly' class Redis class Client WRITE_COMMANDS = ::Rails.cache.data.command.map { |a| a[0] if a[2].include?('write') }.compact.to_set.freeze def process(commands) if commands.flatten.any? { |c| WRITE_COMMANDS.include?(c.to_s) } raise NotImplementedError, "REDIS_ACCESS_MODE is set to 'readonly', disallowing writes" end logging(commands) do ensure_connected do commands.each do |command| if command_map[command.first] command = command.dup command[0] = command_map[command.first] end write(command) end yield if block_given? end end end end end end