redis_env_config 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9207ea50f1e51550994fbce131e0e8d2b23a34e67777e9797200fbc9cbe9c5fe
4
+ data.tar.gz: c9140f9073d744f0750613a7c2788975de8cca13f3e0fdcf8e56349826b94186
5
+ SHA512:
6
+ metadata.gz: 6e73270db120ed2b5baf4d13bbdd9409ca9bb3339245661959ad1465a3f662f987ab370569a2b1b3c269d51b55e62763b8f34356b4dcc3d3f0ae5306b871b0f5
7
+ data.tar.gz: ee41787321de137d97a323a7f5deae525e3fe0bddd69429be618fc6acbb675b065d773e218e1b05945e44bccbf85627345840ad4ea2c8c6bc76471be09952389
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.5.3
7
+ before_install: gem install bundler -v 2.0.1
data/Dockerfile ADDED
@@ -0,0 +1,18 @@
1
+ FROM ruby:2.5
2
+
3
+ RUN gem install --no-doc bundler
4
+
5
+ RUN mkdir /usr/src/app
6
+
7
+ WORKDIR /usr/local/src
8
+
9
+ ADD docker/docker-entrypoint.sh /
10
+ ADD docker/minica ./minica
11
+ ADD Gemfile redis_env_config.gemspec ./
12
+ ADD lib/redis_env_config/version.rb ./lib/redis_env_config/version.rb
13
+ RUN bundle install --jobs=3 --retry=3
14
+ ADD . ./
15
+
16
+ ENTRYPOINT [ "/docker-entrypoint.sh" ]
17
+
18
+ CMD bundle exec rspec --force-color -fd spec
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in redis_env_config.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 Sheldon Hearn
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # RedisEnvConfig
2
+
3
+ Provides redis client configuration based on environment variables:
4
+
5
+ * `REDIS_URL` - standard Redis URL understood by the [redis](https://rubygems.org/gems/redis) gem.
6
+ * `REDIS_CERT` - PEM-encoded client certificate with which to connect to redis
7
+ (required if `REDIS_URL` begins with `rediss:`)
8
+ * `REDIS_KEY` - PEM-encoded client key with which to connect to redis
9
+ (required if `REDIS_URL` begins with `rediss:`)
10
+ * `REDIS_CA_FILE` - Path to file containing PEM-encoded CA certificate with which to validate server certificate
11
+ (required if `REDIS_URL` begins with `rediss:`)
12
+ * `REDIS_CA` - PEM-encoded CA certificate with which to validate server certificate
13
+ (if present, content is written to `REDIS_CA_FILE`, if that file does not yet exist)
14
+
15
+ ## Installation
16
+
17
+ Add this line to your application's Gemfile:
18
+
19
+ ```ruby
20
+ gem 'redis_env_config'
21
+ ```
22
+
23
+ And then execute:
24
+
25
+ $ bundle
26
+
27
+ Or install it yourself as:
28
+
29
+ $ gem install redis_env_config
30
+
31
+ ## Usage
32
+
33
+ ```
34
+ require "redis"
35
+ require "redis_env_config"
36
+
37
+ redis = Redis.new(RedisEnvConfig.new.to_h)
38
+ ```
39
+
40
+ ## Development
41
+
42
+ After checking out the repo, run `docker-compose build && docker-compose run test` to run the tests.
43
+
44
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
45
+
46
+ ## Contributing
47
+
48
+ Bug reports and pull requests are welcome on GitHub at https://github.com/webnifico/redis_env_config.
49
+
50
+ ## License
51
+
52
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "redis_env_config"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,22 @@
1
+ version: "3"
2
+
3
+ services:
4
+ redis:
5
+ image: redis:6.2.1
6
+ volumes:
7
+ - "./docker/minica:/usr/src"
8
+ redis-ssl:
9
+ image: redis:6.2.1
10
+ command: >
11
+ redis-server --tls-port 6379 --port 0
12
+ --tls-cert-file /usr/src/redis-ssl/cert.pem
13
+ --tls-key-file /usr/src/redis-ssl/key.pem
14
+ --tls-ca-cert-file /usr/src/minica.pem
15
+ volumes:
16
+ - "./docker/minica:/usr/src"
17
+ test:
18
+ build:
19
+ context: .
20
+ depends_on:
21
+ - redis
22
+ - redis-ssl
@@ -0,0 +1,17 @@
1
+ #!/bin/bash
2
+
3
+ waitfor() {
4
+ host=$1
5
+ port=$2
6
+
7
+ echo Waiting for tcp://$host:$port... 1>&2
8
+ while ! echo > /dev/tcp/$host/$port; do
9
+ echo Waiting for tcp://$host:$port... 1>&2
10
+ sleep 1
11
+ done 2>/dev/null
12
+ }
13
+
14
+ waitfor redis 6379
15
+ waitfor redis-ssl 6379
16
+
17
+ exec "$@"
@@ -0,0 +1,13 @@
1
+ redis-server --tls-port 6379 --port 0 \
2
+ --tls-cert-file redis-server/cert.pem --tls-key-file redis-server/key.pem --tls-ca-cert-file minica.pem
3
+ redis-cli -h redis --tls \
4
+ --cert redis-client/cert.pem --key redis-client/key.pem --cacert minica.pem
5
+
6
+ redis = Redis.new(
7
+ url: "rediss://redis:6379/1",
8
+ ssl_params: {
9
+ cert: OpenSSL::X509::Certificate.new(File.read("redis-client/cert.pem")),
10
+ key: OpenSSL::PKey::RSA.new(File.read("redis-client/key.pem")),
11
+ ca_file: "./minica.pem"
12
+ }
13
+ )
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpQIBAAKCAQEApD4TG5+75/JlDdFOSRYUmfqcZJq4XqKeR2NXQbFVBhBg3Cb1
3
+ DEnXEGLJs5UtTcDSRxxJTkCHTfa6KXEqR3VvSk5SFHdS1XOCJvPnNOt0eWgsizsG
4
+ KS2Joq5pu92vsfEgjxTC1i+K/6htPoIMcIWBa7WjbcRvN0LkG9iYFx8PWLJR0NSF
5
+ fzFDGiiixMSH9OLiGQBCx6Iz/MeGfzHv7nYe8JiMADnS9pjCsAoRBIRt1Q/ke5CE
6
+ Lx5hw85X9wt6uoXFSxUMEMXekvkgtXMaC7mkOKCE1+/WAZjUCgX1uaf/P8QMTViS
7
+ 0zlhqWiVL2wVkKbvOePybAjMCOzIUR7erAv/GwIDAQABAoIBAQCSWK12A9LPTnE0
8
+ 6rey7/XTbjdEfYii6ovWWHI7muODz7w+7oeTN4hmlV/coKQJkDLOIio/i8gEdEBV
9
+ BP0DR2Su9TK2AczRXWcvhk0SHmtecrCeLy3CK01ko7ybJWGUUKMOWxVw/FQCkfUl
10
+ qYOkD5HOg77n5AylVPkkxs5ea9Kk2HHLZlfE2+1M0v/Iu/JGc6SkgFPVj4kx+Tbn
11
+ QHla7tgBNwJeB920cCMJ9ZpxoxZuk8DGDTGWOl6xpxYrzEjo3n7PQ6evIsvTMwKd
12
+ 6cTnR2Fo6FkOUPRhtSwj44/Z3HZT1BKzswopRXEQHC89FnnFVeSYpyOZEK80o+uu
13
+ YL7PO1QhAoGBANWkcfQDmFTnBZamVXRk9nTchTv9cl5siZ3q8VMoj7YA+ThDKznZ
14
+ lwfUS5vVh82HNx9L9jUfvmoWoYeOzwhEH/Z1c+dBrqN8npclaqHNGVJqFnPk6MQc
15
+ ChQK3rmtkwp38YUdEi41hufZ994RwdHTMNTx2rm7Ntzr7eFZKWAE7UI/AoGBAMTO
16
+ TodnRm8rcAH8DE23fh18AdroZzd1DSN6h9a2d80LrvP5DbR3nzNV0qyiSw/beJLZ
17
+ 7vi30hEM1zTxWkEYW5GTUS/PGO+xlSIDAuYMCQVMYi6XEBs7Px0I/fCRgfklRpoF
18
+ y+ZXhaUdtotXgcw8oT+515zRNPAf4BdNwg7dS5QlAoGBAK0uSWU5SNGCGAifuuPI
19
+ N/RREfuoHn6mUwPdAFSdq6kort1JrY+Ob5xcHhIrjJMxiaBoDiPQIKWUxMnDHNYh
20
+ ixtY6GRM3QkPqurw3LheLqmc76hwpbLa29yVVyiCqJAy3GhAQY2NvFbTXNb54/h3
21
+ zry/dMNcHEQHR+SFR0HbnIw3AoGASdcSFbGE9r74dnYn85zN/6gAVi7uUxtiw5X8
22
+ k23AwzkH+lfOcZCUNcGUmtsFiLySn56PD9iAQ49qy11mvJez+4mnY2WzeHNLfghd
23
+ NQz88XT4PXzGOUFga7ds967QcjcvJyjXmOPrq8jbLaq2c3eoFG3Y3OiNkS6UeInf
24
+ Lo6PBdUCgYEAkgbt46GTYX414MS/HI5jW1ow6dISQkOofyvSEG6wk99ZF2nS1lzj
25
+ HYpGdmDVynEAS6gFfc6PYiNr7fUFPfbCgs7uHK6AUZQJ6/rm57lcXK/0J/Vq5W8b
26
+ SHXAUzRZJrj5jEIhzEMXpmG+oyST3B9sJ5bg0Q9DerDLNJj9Q1wWI4U=
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,19 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDCTCCAfGgAwIBAgIIHjPiRgsqaXkwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
3
+ AxMVbWluaWNhIHJvb3QgY2EgMWUzM2UyMCAXDTE4MDYyNjE0MDgzNloYDzIxMTgw
4
+ NjI2MTQwODM2WjAgMR4wHAYDVQQDExVtaW5pY2Egcm9vdCBjYSAxZTMzZTIwggEi
5
+ MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkPhMbn7vn8mUN0U5JFhSZ+pxk
6
+ mrheop5HY1dBsVUGEGDcJvUMSdcQYsmzlS1NwNJHHElOQIdN9ropcSpHdW9KTlIU
7
+ d1LVc4Im8+c063R5aCyLOwYpLYmirmm73a+x8SCPFMLWL4r/qG0+ggxwhYFrtaNt
8
+ xG83QuQb2JgXHw9YslHQ1IV/MUMaKKLExIf04uIZAELHojP8x4Z/Me/udh7wmIwA
9
+ OdL2mMKwChEEhG3VD+R7kIQvHmHDzlf3C3q6hcVLFQwQxd6S+SC1cxoLuaQ4oITX
10
+ 79YBmNQKBfW5p/8/xAxNWJLTOWGpaJUvbBWQpu854/JsCMwI7MhRHt6sC/8bAgMB
11
+ AAGjRTBDMA4GA1UdDwEB/wQEAwIChDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
12
+ BQUHAwIwEgYDVR0TAQH/BAgwBgEB/wIBADANBgkqhkiG9w0BAQsFAAOCAQEAFXFL
13
+ ackPzuFWBDTlNsro/Hb4pbqzaiqrGuxQms+4vFEjCAgQ/cpF2Vlf0Kk9F8TktlwB
14
+ xHAwFfPvHYqXF4wmNlQo6gkJS957VkYC3xJVJjAU8+71qVz455j6Ty+MJEzG6GSC
15
+ YaJUimzgX0HqVyizxX9JeA7dq3vHVOhESn6RknfXlWspN90YdCXRVtyMl/bgZ8LY
16
+ ELrgQz/vtw215iJbGeb3Fsd5LaS5h0NZGDrVMcqo+C8gTrtMREODbOqZtZ/ulDQp
17
+ SGV87yUiAA3VLwLdKO7EcX1AaePlVE+vQnd/GxsomLYVKo5EjTQr179NuogHiS6H
18
+ A6bcQP0Wgcrncv2suw==
19
+ -----END CERTIFICATE-----
@@ -0,0 +1,19 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDETCCAfmgAwIBAgIILtBgiOVdqTwwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
3
+ AxMVbWluaWNhIHJvb3QgY2EgMWUzM2UyMB4XDTIxMDQxNTA4NTEyMloXDTIzMDUx
4
+ NTA4NTEyMlowFzEVMBMGA1UEAxMMcmVkaXMtY2xpZW50MIIBIjANBgkqhkiG9w0B
5
+ AQEFAAOCAQ8AMIIBCgKCAQEA4lFXjFM4c1PkEpQrTyNntXkyyQ0NJK0As49BwrPK
6
+ PW2CoIuk0rR0Ak6rYeOxTaYDfb29NMYMDTOIbv0AIbyzqbHafAgwtbYu2Xgwadc4
7
+ IN7C1N/hjNe2lS4WFgznVPZxP44diLTiwWjE9L3mNDPfJH8GkxGSJ/Bt3l+FG5Iw
8
+ Yzwi6/fCJ+Odj4JgXkKB7RyK/dmZT+YCEtfoo+kuHeFN8Exv5O51nQgR6uh3r4cV
9
+ cdbEDjnLUpXYo9PgQN3LVs2rtFV/Xg2vswYGWuoapDeuimnZXJpfsjjEVF4thcNR
10
+ jgpbmySrWtrtmdCqfL/IzDaQgmfPCaZ9qiwhGXojDTp3WQIDAQABo1gwVjAOBgNV
11
+ HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1Ud
12
+ EwEB/wQCMAAwFwYDVR0RBBAwDoIMcmVkaXMtY2xpZW50MA0GCSqGSIb3DQEBCwUA
13
+ A4IBAQAOOiRLLwVmdbK/jHbC+5qg8s9KEvnC8czywtB1Zm8P9ETfGr8gqyWDLymW
14
+ +hoTMax0/Zc1DK4p18arQ6wnVXdhkku/eyT7+VwMS5YiW23bmbRuhahgMM2eFm1n
15
+ fflomJaAWmxmZBB8fb0cVY5J48YCbzIlA/4wjHIh3AiE9vqnLYQbMsFcnIAu4O2s
16
+ ZN2A31u9UJra+y2e06x4YhxpErnhkmNKMpPGd6Lyh5sLcPU/L9jKsXi3c0uzC5Hj
17
+ Nukf0KD/R/86FnpTvII17LzAwmxT3h+zk0x86LCcAxmGpo1nM9L4SllY7ZqDbuTR
18
+ Q1h5AC/naHcGkZyjSkJuRyzsq7rD
19
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEA4lFXjFM4c1PkEpQrTyNntXkyyQ0NJK0As49BwrPKPW2CoIuk
3
+ 0rR0Ak6rYeOxTaYDfb29NMYMDTOIbv0AIbyzqbHafAgwtbYu2Xgwadc4IN7C1N/h
4
+ jNe2lS4WFgznVPZxP44diLTiwWjE9L3mNDPfJH8GkxGSJ/Bt3l+FG5IwYzwi6/fC
5
+ J+Odj4JgXkKB7RyK/dmZT+YCEtfoo+kuHeFN8Exv5O51nQgR6uh3r4cVcdbEDjnL
6
+ UpXYo9PgQN3LVs2rtFV/Xg2vswYGWuoapDeuimnZXJpfsjjEVF4thcNRjgpbmySr
7
+ WtrtmdCqfL/IzDaQgmfPCaZ9qiwhGXojDTp3WQIDAQABAoIBAQDQPIHuhsAhNWZc
8
+ ReMXnP8Wth6paQ3X2isUDFM4oA8MuE+CAxs0GH/Jg7MjjcqdJIx/zO5juXprRyhY
9
+ 3weZAzTYheH/T9XpzGiNBo6dRD7L18uy7RBudCj2WIJP5a2QunT3Qn8gQzeFOC5I
10
+ 9tXy4GuH/C0Dcx5lC088Ve12ses90eLnM2K/tXZ82aNFjkSg7gl4o2efZWtS/6l0
11
+ D2OFdUKWl55uhBTqPvWt04LFndqX0cMs9csRi5JWBybMUetdzXj/gEjxKJ4JCkLW
12
+ pK6RLo6S3K6a2IWCIrs0t2YDL6asnLYtGX/2FB43wMc2/9S9GYPITO7TfOPbycZ4
13
+ 3/RbTZ4lAoGBAOV1QdGo84UE07MfoILs+kAcyh5i3tA5DylBcnMHmSw8fB/5U04o
14
+ zUA1Hjikbtud8xNrLVd+F037CjVZ4DqNc/XU7aLtzfIHzYoZrqb632wxI+jRjPa7
15
+ p2uErYW2Ku6lf1l8cKp4oXh9rrkN3btsEkIEkJA3xYrCi8F4Sr0vQMtfAoGBAPx/
16
+ GBWHHihD5ytaPyM8957e83fXIVwxN7T2oubCgkJQ4gya7dxOK6ndLpdtWMezaSxD
17
+ Y0utCP37c5bXR5J6NGcp5MzoMxN9jDaKwW0fzGwIP86s9ajwJdKwj3mQSiytSetP
18
+ dD8JpYfS83CAkavqN5XYIezV8mzxi5H0qg3cB/BHAoGAL1qMk80vPHNrkRrk0EBB
19
+ wPtwBudWnlg4NcZo7S5TQRrWbu7Qb1/iQ+7yZrQgoLgvEwHaYKUIADLfv3Tl3o+U
20
+ r9YamLZE+z76/xYfwhwiAbz+cSzVz5GYkorWGLMolwmWh4wz4Cp3AFvHtC8VZHmA
21
+ Jxm0D99CqElP+ERwAC0BTTcCgYEA3wnZmXKgpgrNUhNHAHajeXgR8wNa2Zg0UCsp
22
+ XNPmwnO2KlJU2K1IjqTtuh+CM+18cvgX50ozTj9nLJCADZjbX2G3VXWrYIUfbTKG
23
+ iEF1jtx+mK9Z1WBE2ObT5hsaGnr8d9rYobKAwQkLt44qn4Smkzu3RAD9Q1Te6BAK
24
+ g3GgpZMCgYBnq30AcnqW8HoTC0CAe1+xcToOBF3/HvjmAxTLfIDap4QT4CS2S7VI
25
+ Asc/4WoVYiDgO09Vc5IikSqYFTup6O6XRa32lWKpQfCoVEL7Hwhl6ls3YJE7ei0U
26
+ JVef2TiVmNUe4fSh45982876fE1tuKEuXoexeQ2GALwjSD75Y3+duQ==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,19 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDCzCCAfOgAwIBAgIIPEPcWAnMGO4wDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
3
+ AxMVbWluaWNhIHJvb3QgY2EgMWUzM2UyMB4XDTIxMDQxNTE3MjMzN1oXDTIzMDUx
4
+ NTE3MjMzN1owFDESMBAGA1UEAxMJcmVkaXMtc3NsMIIBIjANBgkqhkiG9w0BAQEF
5
+ AAOCAQ8AMIIBCgKCAQEApQ5BTqXw8PREu361PYhV4FxYUiCPHJ0URppk+70gIn7o
6
+ 85z5nXmEqvViFpkA6jFaMKY5HF7/PX8cDIL0KITDxYW9zCT/TiuQ1ECFn2zKvF7P
7
+ 7Q6ZG0c3Ohq3Yw0snhxucnQgHt6B98eE7jqxsM2dIBV1FtIHMzYA28JrXgVD+QP/
8
+ i1Ox6lkoeGPavVEZKso7uT9EFAEvzlxja/dM2ZojaU8jJiB/FxP5qjrst3W4cGe2
9
+ vMxSM7/BZu0Mj00EjFbuNlOphEp346SKxyDlFrg+ELOwV45FgHZwmpz9W4FSEKKl
10
+ ea7xSrZ6Nq0vGZWUGuCdsy+6rg4CfPDp9ZuE5BacSwIDAQABo1UwUzAOBgNVHQ8B
11
+ Af8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB
12
+ /wQCMAAwFAYDVR0RBA0wC4IJcmVkaXMtc3NsMA0GCSqGSIb3DQEBCwUAA4IBAQBk
13
+ NuhWj8Fo6c30sDdfcN4YHGwNptHegp30xixXx/BtnPNxfYxYWpHZL24bRv0IxJGf
14
+ 8QDRDE8jDWezXTDg/gwAF6YGByDkauC3IPNjOdLq/A6psKc7vmGVlcIXtU+EGmOH
15
+ zU26IxwyS4WXauzI7p/syrLEbrT2K0oeCIsCjhXJGGryVLyAkbJUeMNZ+UanZ7yv
16
+ 7Z3MQAEoz1Z04bTsJANV8zONYt6IE2ldXVu1fowkkR2ggYZ5R969h5KOKQSZIkWe
17
+ K2r5yjWYIw7aWHLGZrgw063dLhhUbmTYACaSVP82FOpEHVD2x1aJ7dDTXYhsX5nW
18
+ MnzQ/qaTk83TXxA6efhD
19
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEApQ5BTqXw8PREu361PYhV4FxYUiCPHJ0URppk+70gIn7o85z5
3
+ nXmEqvViFpkA6jFaMKY5HF7/PX8cDIL0KITDxYW9zCT/TiuQ1ECFn2zKvF7P7Q6Z
4
+ G0c3Ohq3Yw0snhxucnQgHt6B98eE7jqxsM2dIBV1FtIHMzYA28JrXgVD+QP/i1Ox
5
+ 6lkoeGPavVEZKso7uT9EFAEvzlxja/dM2ZojaU8jJiB/FxP5qjrst3W4cGe2vMxS
6
+ M7/BZu0Mj00EjFbuNlOphEp346SKxyDlFrg+ELOwV45FgHZwmpz9W4FSEKKlea7x
7
+ SrZ6Nq0vGZWUGuCdsy+6rg4CfPDp9ZuE5BacSwIDAQABAoIBAQCi2sDXL+XeaLVU
8
+ Zf2/e8B3wcWnKtbpvZbe3sGanQ2S27NPgufLV7Xt1HV2pHqBmDZL4AZjltuyOrNb
9
+ KO5s+CoNvxr4zNxWraeVtR/ioD4cxFPVq1ynzImSPAALrFkEnDrhlPCIZLTJ3MOt
10
+ Jp5iO0239VP1Mz/FaJhKPLchKoLZs2GKPh24eHuNhnaaJdOWQpYFtwCGeQElEIOk
11
+ xw61GcYzmcI6/Ivngv9msg0FJlM0r/0PEvjQ0691QdYLHEGI2UQA3QzCa3rFP3FK
12
+ 2s1VMFmbuaH0fzuNk3OfL0oFfpTE8HS5/LYauiP7aA6JeKdV2hxqp/iJkYbSrP6x
13
+ j4gYP5lJAoGBANAD7NIIc6kiLW11m82WJJm8qnH4xPWdw2LjstfJ28vYMGxob+iq
14
+ UiLykgv86lxEgXCqwJizbnFQGfxT96zKMSLVFv5H818bbfzQbnpI6/aMqovo1f6Y
15
+ gY/F2qxL7t4ZGqA6wbslR3Doz81cYD/okdVe8t8bVQzZDOVJBdMjEm7lAoGBAMsh
16
+ Z2Osvge5TlWun9OihsqHiajN6gU78QcBC6DHrBYCLk8XfAZJKY18O8XzBZy2/WYv
17
+ gCOaV48axj0yurPDzKBzt6Lznt9bqSk/8yBIrqaufa4qR7Lylh+A2D6h8gGN2GOm
18
+ arD1z2Mqw6UHJUalmHxmiuR9l9dPQZVgfPfHBvtvAoGBAM1BAj4hPtdGNSML6IfM
19
+ viLAqkK5oMdnO3NpkIAi23Hhya4+wyYGYfO//OI9VpditYKRymcirji7PFjiFcL2
20
+ 49MmBoE0R+2xqC7NECYzrDnkhSh2wClvHHDcXzCh4HpgtQgj0iOy3jKIVvuhSgvl
21
+ lXjALtB9LMf3qCTakBfNRJQNAoGAcIktEledYAIVl/qKqWEddA7rAQ4zXHr86Xh2
22
+ zLhSak8DAOZt272ku7HcG6qrrUrj0Dz4rMDRSYL32OfF79nGAA6b6jc2CWBqs2Ou
23
+ enBJ8iYxks/xsP4clY94PhrSTHIdM/f6m9dS8gm7Ii53RFBxzlmxES1TdgF+wBcY
24
+ pN0qzRkCgYAuDAGKfUwpjdzNWawJy6NLeG7+HnniIpxs2Jlyt7RjyOYY5eM8UnrF
25
+ K2JEKZGLKXuyNgk0UBSHE3p1zoO7qihLOYgaHfzMXSZQCMPkBl8m331HLz0qOKqW
26
+ KQ2vgWLk5cF+ndq6FWxv+qbjd7ukXhcWs3hTwihN1HUU1Yxc4OFr9A==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,28 @@
1
+ require "redis_env_config/version"
2
+ require "redis"
3
+
4
+ class RedisEnvConfig
5
+ class Error < StandardError; end
6
+
7
+ def initialize(env: ENV)
8
+ @config = {}
9
+ @config[:url] = env["REDIS_URL"] if env["REDIS_URL"]
10
+ if !@config[:url].nil? and @config[:url].start_with?("rediss:")
11
+ @config[:ssl_params] = Hash.new.tap do |x|
12
+ cert = env["REDIS_CERT"] or raise Error, "missing environment variable REDIS_CERT"
13
+ x[:cert] = OpenSSL::X509::Certificate.new(cert)
14
+ key = env["REDIS_KEY"] or raise Error, "missing environment variable REDIS_KEY"
15
+ x[:key] = OpenSSL::PKey::RSA.new(key)
16
+ x[:ca_file] = env["REDIS_CA_FILE"] or raise Error, "missing environment variable REDIS_CA_FILE"
17
+ if env["REDIS_CA"] and !File.exist?(x[:ca_file])
18
+ File.open(x[:ca_file], "w") { |io| io.write(env["REDIS_CA"]) }
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ def to_h
25
+ @config.dup
26
+ end
27
+
28
+ end
@@ -0,0 +1,3 @@
1
+ class RedisEnvConfig
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,30 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "redis_env_config/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "redis_env_config"
8
+ spec.version = RedisEnvConfig::VERSION
9
+ spec.authors = ["Sheldon Hearn"]
10
+ spec.email = ["sheldonh@starjuice.net"]
11
+
12
+ spec.summary = %q{Redis client configuration from environment}
13
+ spec.description = %q{Provides redis client configuration from environment variables}
14
+ spec.homepage = "https://github.com/webnifico/redis_env_config"
15
+ spec.license = "MIT"
16
+
17
+ # Specify which files should be added to the gem when it is released.
18
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
19
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
20
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ end
22
+ spec.bindir = "exe"
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ["lib"]
25
+
26
+ spec.add_development_dependency "bundler", "~> 2.0"
27
+ spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "redis", "~> 4.2"
29
+ spec.add_development_dependency "rspec", "~> 3.0"
30
+ end
metadata ADDED
@@ -0,0 +1,122 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redis_env_config
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sheldon Hearn
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2021-04-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: redis
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ description: Provides redis client configuration from environment variables
70
+ email:
71
+ - sheldonh@starjuice.net
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".rspec"
78
+ - ".travis.yml"
79
+ - Dockerfile
80
+ - Gemfile
81
+ - LICENSE.txt
82
+ - README.md
83
+ - Rakefile
84
+ - bin/console
85
+ - bin/setup
86
+ - docker-compose.yml
87
+ - docker/docker-entrypoint.sh
88
+ - docker/minica/README
89
+ - docker/minica/minica-key.pem
90
+ - docker/minica/minica.pem
91
+ - docker/minica/redis-client/cert.pem
92
+ - docker/minica/redis-client/key.pem
93
+ - docker/minica/redis-ssl/cert.pem
94
+ - docker/minica/redis-ssl/key.pem
95
+ - lib/redis_env_config.rb
96
+ - lib/redis_env_config/version.rb
97
+ - redis_env_config.gemspec
98
+ homepage: https://github.com/webnifico/redis_env_config
99
+ licenses:
100
+ - MIT
101
+ metadata: {}
102
+ post_install_message:
103
+ rdoc_options: []
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ requirements: []
117
+ rubyforge_project:
118
+ rubygems_version: 2.7.6
119
+ signing_key:
120
+ specification_version: 4
121
+ summary: Redis client configuration from environment
122
+ test_files: []