redis_env 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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