Allow to use ENV variables in redis config

This commit is contained in:
Semyon Pupkov 2016-12-14 00:54:50 +05:00
parent f80ab37cc1
commit a532c6040c
5 changed files with 28 additions and 2 deletions

View file

@ -0,0 +1,4 @@
---
title: Allow to use ENV variables in redis config
merge_request: 8073
author: Semyon Pupkov

View file

@ -601,6 +601,12 @@ If you want to connect the Redis server via socket, then use the "unix:" URL sch
production:
url: unix:/path/to/redis/socket
Also you can use environment variables in the `config/resque.yml` file:
# example
production:
url: <%= ENV.fetch('GITLAB_REDIS_URL') %>
### Custom SSH Connection
If you are running SSH on a non-standard port, you must change the GitLab user's SSH config.

View file

@ -42,7 +42,7 @@ module Gitlab
return @_raw_config if defined?(@_raw_config)
begin
@_raw_config = File.read(CONFIG_FILE).freeze
@_raw_config = ERB.new(File.read(CONFIG_FILE)).result.freeze
rescue Errno::ENOENT
@_raw_config = false
end

View file

@ -0,0 +1,2 @@
test:
url: <%= ENV['TEST_GITLAB_REDIS_URL'] %>

View file

@ -1,7 +1,7 @@
require 'spec_helper'
describe Gitlab::Redis do
let(:redis_config) { Rails.root.join('config', 'resque.yml').to_s }
include StubENV
before(:each) { clear_raw_config }
after(:each) { clear_raw_config }
@ -72,6 +72,20 @@ describe Gitlab::Redis do
expect(url2).not_to end_with('foobar')
end
context 'when yml file with env variable' do
let(:redis_config) { Rails.root.join('spec/fixtures/config/redis_config_with_env.yml') }
before do
stub_env('TEST_GITLAB_REDIS_URL', 'redis://redishost:6379')
end
it 'reads redis url from env variable' do
stub_const("#{described_class}::CONFIG_FILE", redis_config)
expect(described_class.url).to eq 'redis://redishost:6379'
end
end
end
describe '._raw_config' do