Skip to content

Commit

Permalink
AO3-6706 Support Sentinel config for Redis clients (#4787)
Browse files Browse the repository at this point in the history
* AO3-6706 Support Sentinel config for Redis clients

* Fix examples
  • Loading branch information
brianjaustin committed May 17, 2024
1 parent 00a6ac2 commit 2254624
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 25 deletions.
42 changes: 27 additions & 15 deletions config/initializers/gem-plugin_config/redis.rb
Original file line number Diff line number Diff line change
@@ -1,22 +1,34 @@
require 'redis_test_setup'
include RedisTestSetup
require "redis_test_setup"
include RedisTestSetup # rubocop:disable Style/MixinUsage

rails_root = ENV["RAILS_ROOT"] || File.dirname(__FILE__) + "/../../.."
rails_env = ENV["RAILS_ENV"] || "development"
rails_root = ENV["RAILS_ROOT"] || "#{File.dirname(__FILE__)}/../../.."
rails_env = (ENV["RAILS_ENV"] || "development").to_sym

unless ENV["CI"]
if rails_env == "test" && !ENV["DOCKER"]
# https://gist.github.com/441072
start_redis!(rails_root, :cucumber)
end
end
# https://gist.github.com/441072
start_redis!(rails_root, :cucumber) if rails_env == "test" && !(ENV["CI"] || ENV["DOCKER"])

redis_configs = YAML.load_file(rails_root + '/config/redis.yml')
redis_configs = YAML.load_file("#{rails_root}/config/redis.yml", symbolize_names: true)
redis_configs.each_pair do |name, redis_config|
redis_host, redis_port = redis_config[rails_env].split(":")
redis_connection = Redis.new(host: redis_host, port: redis_port)
if ENV['DEV_USER']
namespaced_redis = Redis::Namespace.new(ENV['DEV_USER'], redis: redis_connection)
redis_options = {}
if redis_config[rails_env].is_a?(Hash)
# example:
# redis_kudos:
# development
# name: redis_kudos
# sentinels:
# - host: 127.0.0.1
# port: 26379
# - host: 127.0.0.1
# port: 26380
redis_options = redis_config[rails_env]
else
redis_host, redis_port = redis_config[rails_env].split(":")
redis_options[:host] = redis_host
redis_options[:port] = redis_port
end
redis_connection = Redis.new(redis_options)
if ENV["DEV_USER"]
namespaced_redis = Redis::Namespace.new(ENV["DEV_USER"], redis: redis_connection)
redis_connection = namespaced_redis
end
Object.const_set(name.upcase, redis_connection)
Expand Down
20 changes: 10 additions & 10 deletions config/initializers/gem-plugin_config/resque.rb
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
require 'resque'
require "resque"

rails_root = ENV["RAILS_ROOT"] || File.dirname(__FILE__) + "/../../.."
rails_env = ENV["RAILS_ENV"] || "development"
rails_root = ENV["RAILS_ROOT"] || "#{File.dirname(__FILE__)}/../../.."
rails_env = (ENV["RAILS_ENV"] || "development").to_sym

redis_configs = YAML.load_file(rails_root + '/config/redis.yml')
Resque.redis = redis_configs['redis_resque'][rails_env]
redis_configs = YAML.load_file("#{rails_root}/config/redis.yml", symbolize_names: true)
Resque.redis = redis_configs[:redis_resque][rails_env]

# in-process performing of jobs (for testing) doesn't require a redis server
Resque.inline = ENV['RAILS_ENV'] == "test"
# in-process performing of jobs (for testing) doesn't require a redis server
Resque.inline = ENV["RAILS_ENV"] == "test"

Resque.after_fork do
Resque.redis.client.reconnect
end
Resque.after_fork do
Resque.redis.client.reconnect
end

0 comments on commit 2254624

Please sign in to comment.