summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-01-13 16:08:48 +0000
committerRémy Coutable <remy@rymai.me>2017-01-13 16:08:48 +0000
commit5384c720c9c7443fc1f12ea15d55541e14feeb85 (patch)
tree95e874857f9122d4005935e59f09605b7b8093bf
parent7a3ddc5214618dd9a1b761acde3502d78a66ba8c (diff)
parenta532c6040c1c150810122b172a2fad30d1753dfd (diff)
downloadgitlab-ce-5384c720c9c7443fc1f12ea15d55541e14feeb85.tar.gz
Merge branch 'env-var-in-redis-config' into 'master'
Allow to use ENV variables in redis config See merge request !8073
-rw-r--r--changelogs/unreleased/env-var-in-redis-config.yml4
-rw-r--r--doc/install/installation.md6
-rw-r--r--lib/gitlab/redis.rb2
-rw-r--r--spec/fixtures/config/redis_config_with_env.yml2
-rw-r--r--spec/lib/gitlab/redis_spec.rb16
5 files changed, 28 insertions, 2 deletions
diff --git a/changelogs/unreleased/env-var-in-redis-config.yml b/changelogs/unreleased/env-var-in-redis-config.yml
new file mode 100644
index 00000000000..561ea7f514e
--- /dev/null
+++ b/changelogs/unreleased/env-var-in-redis-config.yml
@@ -0,0 +1,4 @@
+---
+title: Allow to use ENV variables in redis config
+merge_request: 8073
+author: Semyon Pupkov
diff --git a/doc/install/installation.md b/doc/install/installation.md
index 9dba03b1924..9cebed34b7e 100644
--- a/doc/install/installation.md
+++ b/doc/install/installation.md
@@ -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.
diff --git a/lib/gitlab/redis.rb b/lib/gitlab/redis.rb
index 9226da2d6b1..9384102acec 100644
--- a/lib/gitlab/redis.rb
+++ b/lib/gitlab/redis.rb
@@ -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
diff --git a/spec/fixtures/config/redis_config_with_env.yml b/spec/fixtures/config/redis_config_with_env.yml
new file mode 100644
index 00000000000..f5860f37e47
--- /dev/null
+++ b/spec/fixtures/config/redis_config_with_env.yml
@@ -0,0 +1,2 @@
+test:
+ url: <%= ENV['TEST_GITLAB_REDIS_URL'] %>
diff --git a/spec/lib/gitlab/redis_spec.rb b/spec/lib/gitlab/redis_spec.rb
index e5406fb2d33..917c5c46db1 100644
--- a/spec/lib/gitlab/redis_spec.rb
+++ b/spec/lib/gitlab/redis_spec.rb
@@ -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