Skip to content

Instantly share code, notes, and snippets.

@MahmoudAgamy
Forked from mstruve/redis.rb
Created September 22, 2019 15:56
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MahmoudAgamy/1fe9a71afcec46d2bb53d4dec5fa9066 to your computer and use it in GitHub Desktop.
Save MahmoudAgamy/1fe9a71afcec46d2bb53d4dec5fa9066 to your computer and use it in GitHub Desktop.
Redis Readonly Console
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment