f5cb3ac14d
The `Rails` object was not always available in all tasks that require Redis access, such as `mail_room`, so the constant pointing to the configuration path was never defined, but we still attempted to access it in `config_file_name`, resulting in a `NameError` exception. Further, there was no benefit to defining these paths in a constant to begin with -- they're only accessed in one place, and it was within the class where they were being defined. We can just provide them at run-time instead. Further _still_, we were calling `File.expand_path` on the absolute path returned by `Rails.root.join`, which was rather pointless.
31 lines
1 KiB
Ruby
31 lines
1 KiB
Ruby
# please require all dependencies below:
|
|
require_relative 'wrapper' unless defined?(::Gitlab::Redis::Wrapper)
|
|
|
|
module Gitlab
|
|
module Redis
|
|
class SharedState < ::Gitlab::Redis::Wrapper
|
|
SESSION_NAMESPACE = 'session:gitlab'.freeze
|
|
DEFAULT_REDIS_SHARED_STATE_URL = 'redis://localhost:6382'.freeze
|
|
REDIS_SHARED_STATE_CONFIG_ENV_VAR_NAME = 'GITLAB_REDIS_SHARED_STATE_CONFIG_FILE'.freeze
|
|
|
|
class << self
|
|
def default_url
|
|
DEFAULT_REDIS_SHARED_STATE_URL
|
|
end
|
|
|
|
def config_file_name
|
|
# if ENV set for this class, use it even if it points to a file does not exist
|
|
file_name = ENV[REDIS_SHARED_STATE_CONFIG_ENV_VAR_NAME]
|
|
return file_name if file_name
|
|
|
|
# otherwise, if config files exists for this class, use it
|
|
file_name = config_file_path('redis.shared_state.yml')
|
|
return file_name if File.file?(file_name)
|
|
|
|
# this will force use of DEFAULT_REDIS_SHARED_STATE_URL when config file is absent
|
|
super
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|