redis_env 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39f5722dd8619bd1e3f93efe5bc9a7658153d7ac
4
- data.tar.gz: 93e4e4f4e5b1c717b1009bbc346058576a7c5da6
3
+ metadata.gz: 2c733019825381a636ea3ce77a2c5274141aedf9
4
+ data.tar.gz: 95d3997aeb2aeec08ec2dd6cd83bd99a0f360350
5
5
  SHA512:
6
- metadata.gz: a6ab41b3bdf6b25f0eb6a3ce284ef9508731d5a7ab3b2c40f7a8aeed87eb4bb8b7429e7cd479720e81543cab60ce21c61c2a0c3ae5996e78574359c7e3a1ecf5
7
- data.tar.gz: d92ea2c50e5dd9ea30f78c6c311a82baac5cb99827bd18a7f8cdc85e8ab6bb2e91171df39896f2089831e48de32d5765d0673233bcce5653e1b4d2558d592348
6
+ metadata.gz: cbf6775d971ce592177471760772dda087d5e8e1b8bbf414006833a1072458270e0378da3f14c1f227554334385d8b9b601f711616f3c6a807dfcc7cacc84883
7
+ data.tar.gz: 5c39c4a9afe3db9a10f1c689ca3371debe1ab318fad36f83dae8ac61e6cec2e145d3b53b34c4b1f7e3f766257e32e720832f979fe22d4216b3413b8d90bf7ae3
data/README.md CHANGED
@@ -37,6 +37,20 @@ Now run your app using redis-env
37
37
  redis-env exec --project my-awesome-app rails s
38
38
  ```
39
39
 
40
+ ### Programmatic Usage
41
+
42
+ ```
43
+ require "redis_env"
44
+ client = RedisEnv.new(Redis.new, "my-awesome-app")
45
+
46
+ # Write keys
47
+ client.set("IMPORTANT_KEY", "VALUE")
48
+ client.bulk_set("IMPORTANT_KEY" => "NEW VALUE", "ANOTHER_KEY" => "banana")
49
+
50
+ # Use keys
51
+ SomeRestClient.new(url: client.variables["RELEVENT_URL"])
52
+ ```
53
+
40
54
  ## Contributing
41
55
 
42
56
  Bug reports and pull requests are welcome on GitHub at https://github.com/sionide21/redis-env.
@@ -2,30 +2,31 @@
2
2
  require "thor"
3
3
  require "redis"
4
4
  require "dotenv"
5
+ require "redis_env"
5
6
 
6
- class RedisEnv < Thor
7
+ class CLI < Thor
7
8
  class_option :project, type: :string, desc: "The project these variables are for"
8
9
  class_option :redis, type: :string, desc: "The url of the redis server", default: "redis://localhost:6379/0"
9
10
 
10
11
  desc "set NAME VALUE", "Set an environment variable called NAME to VALUE"
11
12
  def set(name, value)
12
- client.hset(namespace, name, value)
13
+ client.set(name, value)
13
14
  end
14
15
 
15
16
  desc "load FILE", "Read an env file and load it into redis"
16
17
  def load(file)
17
18
  vars = Dotenv::Environment.new(file)
18
- client.mapped_hmset(namespace, vars)
19
+ client.bulk_set(vars)
19
20
  end
20
21
 
21
22
  desc "unset NAME", "Remove an environment variable called NAME"
22
23
  def unset(name)
23
- client.hdel(namespace, name)
24
+ client.unset(name)
24
25
  end
25
26
 
26
27
  desc "clear", "Remove all environment variables"
27
28
  def clear
28
- client.del(namespace)
29
+ client.clear
29
30
  end
30
31
 
31
32
  desc "list", "List all variables"
@@ -43,21 +44,13 @@ class RedisEnv < Thor
43
44
 
44
45
  private
45
46
 
46
- def namespace
47
- "redis-env:#{project}"
48
- end
49
-
50
- def project
51
- options[:project] || "__default__"
52
- end
53
-
54
47
  def client
55
- @client ||= Redis.new(url: options[:redis])
48
+ @client ||= RedisEnv.new(Redis.new(url: options[:redis]), options[:project])
56
49
  end
57
50
 
58
51
  def env
59
- @env ||= client.hgetall(namespace)
52
+ @env ||= client.variables
60
53
  end
61
54
  end
62
55
 
63
- RedisEnv.start(ARGV)
56
+ CLI.start(ARGV)
@@ -1,4 +1,8 @@
1
1
  require "redis_env/version"
2
+ require "redis_env/client"
2
3
 
3
4
  module RedisEnv
5
+ def self.new(*args)
6
+ Client.new(*args)
7
+ end
4
8
  end
@@ -0,0 +1,33 @@
1
+ module RedisEnv
2
+ class Client
3
+ attr_reader :redis
4
+ def initialize(redis, project=nil)
5
+ @redis = redis
6
+ @project = project || "__default__"
7
+ end
8
+
9
+ def variables
10
+ redis.hgetall(namespace)
11
+ end
12
+
13
+ def set(name, value)
14
+ redis.hset(namespace, name, value)
15
+ end
16
+
17
+ def bulk_set(vars)
18
+ redis.mapped_hmset(namespace, vars)
19
+ end
20
+
21
+ def unset(name)
22
+ redis.hdel(namespace, name)
23
+ end
24
+
25
+ def clear
26
+ redis.del(namespace)
27
+ end
28
+
29
+ def namespace
30
+ "redis-env:#{@project}"
31
+ end
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module RedisEnv
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_env
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Olive
@@ -112,6 +112,7 @@ files:
112
112
  - bin/setup
113
113
  - exe/redis-env
114
114
  - lib/redis_env.rb
115
+ - lib/redis_env/client.rb
115
116
  - lib/redis_env/version.rb
116
117
  - redis_env.gemspec
117
118
  homepage: https://github.com/sionide21/redis-env