redis-model-extension 0.3.3 → 0.3.4

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.
data/README.markdown CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  Redis model is basic implementation of few methods for creating model which store data in Redis
4
4
 
5
+ ## Initialization
6
+
7
+ You can use yml config file in `config` directory:
8
+
9
+ ``` yml
10
+ test:
11
+ host: "127.0.0.1"
12
+ port: 6379
13
+ db: 3
14
+ other omnited...
15
+ ```
16
+
17
+ Or you can setup directly in initializer (or before any of redis call) redis instance directly:
18
+
19
+ ``` ruby
20
+ RedisModelExtension::Database.redis = Redis.new(host: "127.0.0.1", port: 6379, db: 0)
21
+ ```
22
+
5
23
  ## Usage
6
24
 
7
25
  ``` ruby
@@ -14,7 +32,7 @@ class TestRedisModel
14
32
  :symbol => :to_sym,
15
33
  },
16
34
  :required => [:integer, :string],
17
- :redis_key => [:string],
35
+ :redis_key => [:string, :symbol],
18
36
  :redis_aliases => {
19
37
  :token => [:symbol]
20
38
  }
@@ -24,6 +42,39 @@ class TestRedisModel
24
42
  end
25
43
 
26
44
  foo = TestRedisModel.new()
45
+
46
+ # you can validate your object
47
+
48
+ if foo.valid?
49
+ foo.save #save object
50
+ else
51
+ puts foo.errors #you can get nice errors what is wrong
52
+ end
53
+
54
+ #you can update more attributes at once
55
+ foo.update(:integer => 234, :string => "bar")
56
+
57
+ # !!! if you try to save invalid object you will get ArgumentError execption !!!
58
+
59
+ # after save you can find and get object find_by_alias
60
+
61
+ #this will return array of all object witch has string with value "foo"
62
+ #you can perfor find only with keys which are in redis key
63
+ #this is slow variant for redis but compared to other databases super fast :-)
64
+ #if you specify all keys from redis key it will perform faster method get
65
+ TestRedisModel.find(:string => "foo")
66
+
67
+ #you can use get method if you know all keys used in redis key
68
+ #this variant is super fast
69
+ TestRedisModel.get(:string => "foo", :symbol=> true)
70
+
71
+ #you can ask redis if this item exists
72
+ TestRedisModel.exists?(:string => "foo", :symbol=> true)
73
+
74
+ #you can try to find by alias - alias needs to be uniq
75
+ #use alias only for uniq combination of keys
76
+ TestRedisModel.find_by_alias(:token, :symbol=> true)
77
+
27
78
  ```
28
79
 
29
80
  Now you can easily access all attributes from TestRedisModel by `foo.integer` or exists? `foo.integer?` or set value by `foo.integer = 1234`
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3
1
+ 0.3.4
data/lib/database.rb CHANGED
@@ -2,20 +2,32 @@
2
2
  #Wrapper for redis connection
3
3
  #============================
4
4
  #Creates only one connection to redis per application in first time it needs to work with redis
5
- module Database
5
+ module RedisModelExtension
6
+ module Database
6
7
 
7
- def self.config
8
- if File.exists?('config/redis_config.yml')
9
- YAML.load_file('config/redis_config.yml')[ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development'].symbolize_keys
10
- else
11
- FileUtils.mkdir_p('config') unless File.exists?('config')
12
- FileUtils.cp(File.join(File.dirname(__FILE__),"../config/redis_config.yml.example"), 'config/redis_config.yml.example')
13
- raise ArgumentError, "Redis configuration file does not exists -> 'config/redis_config.yml', please provide it! I have created example file in config directory..."
8
+ def self.config
9
+ if File.exists?('config/redis_config.yml')
10
+ YAML.load_file('config/redis_config.yml')[ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development'].symbolize_keys
11
+ else
12
+ FileUtils.mkdir_p('config') unless File.exists?('config')
13
+ FileUtils.cp(File.join(File.dirname(__FILE__),"../config/redis_config.yml.example"), 'config/redis_config.yml.example')
14
+ raise ArgumentError, "Redis configuration file does not exists -> 'config/redis_config.yml', please provide it! I have created example file in config directory..."
15
+ end
16
+ end
17
+
18
+ def self.redis= redis
19
+ if redis.is_a?(Redis) #valid redis instance
20
+ @redis = redis
21
+ elsif redis.nil? #remove redis instance for changing connection or using in next call configs
22
+ @redis = nil
23
+ else #else you assigned something wrong
24
+ raise ArgumentError, "You have to assign Redis instance!"
25
+ end
14
26
  end
15
- end
16
-
17
- def self.redis
18
- @redis ||= Redis.new(Database.config)
19
- end
20
27
 
28
+ def self.redis
29
+ @redis ||= Redis.new(Database.config)
30
+ end
31
+
32
+ end
21
33
  end
@@ -94,12 +94,12 @@ module RedisModel
94
94
 
95
95
  #Check if key by arguments exists in db
96
96
  def exists?(args = {})
97
- Database.redis.exists(self.name.constantize.generate_key(args))
97
+ RedisModelExtension::Database.redis.exists(self.name.constantize.generate_key(args))
98
98
  end
99
99
 
100
100
  #Check if key by alias name and arguments exists in db
101
101
  def alias_exists?(alias_name, args = {})
102
- Database.redis.exists(self.name.constantize.generate_alias_key(alias_name, args))
102
+ RedisModelExtension::Database.redis.exists(self.name.constantize.generate_alias_key(alias_name, args))
103
103
  end
104
104
 
105
105
  #Wrapper around find to get all instances
@@ -116,12 +116,12 @@ module RedisModel
116
116
  #is key specified directly? -> no needs of looking for other keys! -> faster
117
117
  if klass.valid_key?(args)
118
118
  if klass.exists?(args)
119
- data_args = Database.redis.hgetall(klass.generate_key(args))
119
+ data_args = RedisModelExtension::Database.redis.hgetall(klass.generate_key(args))
120
120
  out << klass.new(args.merge(data_args).merge({:old_args => data_args}))
121
121
  end
122
122
  else
123
- Database.redis.keys(klass.generate_key(args)).each do |key|
124
- data_args = Database.redis.hgetall(key)
123
+ RedisModelExtension::Database.redis.keys(klass.generate_key(args)).each do |key|
124
+ data_args = RedisModelExtension::Database.redis.hgetall(key)
125
125
  out << klass.new(args.merge(data_args).merge({:old_args => data_args}))
126
126
  end
127
127
  end
@@ -138,7 +138,7 @@ module RedisModel
138
138
  if klass.valid_alias_key?(alias_name, args)
139
139
  out << klass.get_by_alias(alias_name, args) if klass.alias_exists?(alias_name, args)
140
140
  else
141
- Database.redis.keys(klass.generate_alias_key(alias_name, args)).each do |key|
141
+ RedisModelExtension::Database.redis.keys(klass.generate_alias_key(alias_name, args)).each do |key|
142
142
  out << klass.get_by_alias_key(key)
143
143
  end
144
144
  end
@@ -150,7 +150,7 @@ module RedisModel
150
150
  args.symbolize_keys!
151
151
  klass = self.name.constantize
152
152
  if klass.valid_key?(args) && klass.exists?(args)
153
- data_args = Database.redis.hgetall(klass.generate_key(args))
153
+ data_args = RedisModelExtension::Database.redis.hgetall(klass.generate_key(args))
154
154
  klass.new(args.merge(data_args).merge({:old_args => data_args}))
155
155
  else
156
156
  nil
@@ -159,9 +159,9 @@ module RedisModel
159
159
 
160
160
  #if you know redis key and would like to get object
161
161
  def get_by_redis_key(redis_key)
162
- if redis_key.is_a?(String) && Database.redis.exists(redis_key)
162
+ if redis_key.is_a?(String) && RedisModelExtension::Database.redis.exists(redis_key)
163
163
  unless redis_key.include?("*")
164
- data_args = Database.redis.hgetall(redis_key)
164
+ data_args = RedisModelExtension::Database.redis.hgetall(redis_key)
165
165
  klass = self.name.constantize
166
166
  klass.new(data_args.merge({:old_args => data_args}))
167
167
  else
@@ -177,9 +177,9 @@ module RedisModel
177
177
  args.symbolize_keys!
178
178
  klass = self.name.constantize
179
179
  if klass.valid_alias_key?(alias_name, args) && klass.alias_exists?(alias_name, args)
180
- key = Database.redis.get(klass.generate_alias_key(alias_name, args))
181
- if Database.redis.exists(key)
182
- data_args = Database.redis.hgetall(key)
180
+ key = RedisModelExtension::Database.redis.get(klass.generate_alias_key(alias_name, args))
181
+ if RedisModelExtension::Database.redis.exists(key)
182
+ data_args = RedisModelExtension::Database.redis.hgetall(key)
183
183
  klass.new(args.merge(data_args).merge({:old_args => data_args}))
184
184
  else
185
185
  nil
@@ -192,10 +192,10 @@ module RedisModel
192
192
  #fastest method to get object from redis by getting it by alias and arguments
193
193
  def get_by_alias_key(alias_key)
194
194
  klass = self.name.constantize
195
- if Database.redis.exists(alias_key)
196
- key = Database.redis.get(alias_key)
197
- if Database.redis.exists(key)
198
- klass.new(args.merge(Database.redis.hgetall(key)).merge({:old_args => key}))
195
+ if RedisModelExtension::Database.redis.exists(alias_key)
196
+ key = RedisModelExtension::Database.redis.get(alias_key)
197
+ if RedisModelExtension::Database.redis.exists(key)
198
+ klass.new(args.merge(RedisModelExtension::Database.redis.hgetall(key)).merge({:old_args => key}))
199
199
  else
200
200
  nil
201
201
  end
@@ -260,14 +260,14 @@ module RedisModel
260
260
 
261
261
  #if this record exists in database
262
262
  def exists?
263
- Database.redis.exists(self.class.generate_key(self.args))
263
+ RedisModelExtension::Database.redis.exists(self.class.generate_key(self.args))
264
264
  end
265
265
 
266
266
  #remove record form database
267
267
  def destroy!
268
268
  if exists?
269
269
  #destroy main object
270
- Database.redis.del(redis_key)
270
+ RedisModelExtension::Database.redis.del(redis_key)
271
271
  destroy_aliases!
272
272
  end
273
273
  end
@@ -278,7 +278,7 @@ module RedisModel
278
278
  if self.old_args
279
279
  self.class.conf[:redis_aliases].each do |alias_name, fields|
280
280
  if self.class.valid_alias_key?(alias_name, self.old_args) && self.class.alias_exists?(alias_name, self.old_args)
281
- Database.redis.del(self.class.generate_alias_key(alias_name, self.old_args))
281
+ RedisModelExtension::Database.redis.del(self.class.generate_alias_key(alias_name, self.old_args))
282
282
  end
283
283
  end
284
284
  end
@@ -288,7 +288,7 @@ module RedisModel
288
288
  def create_aliases
289
289
  main_key = redis_key
290
290
  self.class.conf[:redis_aliases].each do |alias_name, fields|
291
- Database.redis.set(self.class.generate_alias_key(alias_name, self.args), main_key) if self.class.valid_alias_key?(alias_name, self.args)
291
+ RedisModelExtension::Database.redis.set(self.class.generate_alias_key(alias_name, self.args), main_key) if self.class.valid_alias_key?(alias_name, self.args)
292
292
  end
293
293
  end
294
294
 
@@ -302,13 +302,23 @@ module RedisModel
302
302
  self.class.generate_alias_key(alias_name, self.args)
303
303
  end
304
304
 
305
+ #update multiple attrubutes at once
306
+ def update args
307
+ args.each do |key, value|
308
+ method = "#{key}=".to_sym
309
+ if self.respond_to? method
310
+ self.send(method, value)
311
+ end
312
+ end
313
+ end
314
+
305
315
  #save method
306
316
  def save
307
317
  if valid?
308
318
  #generate key (possibly new)
309
319
  generated_key = redis_key
310
- Database.redis.rename(self.class.generate_key(self.old_args), generated_key) if self.old_args && generated_key != self.class.generate_key(self.old_args) && Database.redis.exists(self.class.generate_key(self.old_args))
311
- Database.redis.hmset(generated_key, *self.args.reject{|k,v| v.nil?}.inject([]){ |arr,kv| arr + [kv[0], kv[1].to_s]})
320
+ RedisModelExtension::Database.redis.rename(self.class.generate_key(self.old_args), generated_key) if self.old_args && generated_key != self.class.generate_key(self.old_args) && RedisModelExtension::Database.redis.exists(self.class.generate_key(self.old_args))
321
+ RedisModelExtension::Database.redis.hmset(generated_key, *self.args.reject{|k,v| v.nil?}.inject([]){ |arr,kv| arr + [kv[0], kv[1].to_s]})
312
322
 
313
323
  #destroy aliases
314
324
  destroy_aliases!
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "redis-model-extension"
8
- s.version = "0.3.3"
8
+ s.version = "0.3.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ondrej Bartas"]
12
- s.date = "2012-05-17"
12
+ s.date = "2012-07-27"
13
13
  s.description = "It provides functions as find, find_by_alias, get, exists?, validate, save etc."
14
14
  s.email = "ondrej@bartas.cz"
15
15
  s.extra_rdoc_files = [
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
31
31
  "redis-model-extension.gemspec",
32
32
  "redis-model.gemspec",
33
33
  "test/helper.rb",
34
+ "test/test_database_module.rb",
34
35
  "test/test_redis-model-extension.rb"
35
36
  ]
36
37
  s.homepage = "http://github.com/ondrejbartas/redis-model-extension"
@@ -0,0 +1,25 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'helper'
3
+ class DatabaseModuleTest < Test::Unit::TestCase
4
+ context "DatabaseModule" do
5
+ setup do
6
+ #cleare previously assigned redis instance
7
+ RedisModelExtension::Database.redis = nil
8
+ end
9
+
10
+ should "be initialized directly" do
11
+ assert_nothing_raised do
12
+ RedisModelExtension::Database.redis = Redis.new(host: "127.0.0.1", port: 6379, db: 0)
13
+ RedisModelExtension::Database.redis.info
14
+ end
15
+ assert RedisModelExtension::Database.redis.is_a? Redis
16
+ end
17
+
18
+ should "be initialized from config" do
19
+ assert_nothing_raised do
20
+ RedisModelExtension::Database.redis.info
21
+ end
22
+ assert RedisModelExtension::Database.redis.is_a? Redis
23
+ end
24
+ end
25
+ end
@@ -3,7 +3,7 @@ require 'helper'
3
3
  class RedisModelTest < Test::Unit::TestCase
4
4
  context "RedisModel" do
5
5
  setup do
6
- Database.redis.flushdb
6
+ RedisModelExtension::Database.redis.flushdb
7
7
 
8
8
  class TestRedisModel
9
9
  REDIS_MODEL_CONF = {
@@ -97,16 +97,39 @@ class RedisModelTest < Test::Unit::TestCase
97
97
  end
98
98
  end
99
99
 
100
+ context "updating" do
101
+ setup do
102
+ @new_args = {:integer => 123457, :string => "bar", :symbol => :foo, :boolean => false}
103
+ end
104
+
105
+ should "change attributes" do
106
+ @test_model.update @new_args
107
+ assert_equal @test_model.integer, @new_args[:integer]
108
+ assert_equal @test_model.string, @new_args[:string]
109
+ assert_equal @test_model.symbol, @new_args[:symbol]
110
+ assert_equal @test_model.boolean, @new_args[:boolean]
111
+ end
112
+
113
+ should "ignore unknown attributes and other normaly update" do
114
+ @test_model.update @new_args.merge(:unknown => "attribute")
115
+ assert_equal @test_model.integer, @new_args[:integer]
116
+ assert_equal @test_model.string, @new_args[:string]
117
+ assert_equal @test_model.symbol, @new_args[:symbol]
118
+ assert_equal @test_model.boolean, @new_args[:boolean]
119
+ end
120
+
121
+ end
122
+
100
123
  context "saving" do
101
124
  setup do
102
125
  @test_model.save
103
126
  end
104
127
 
105
128
  should "be saved and then change of variable included in key should rename it in redis!" do
106
- assert_equal Database.redis.keys("*").size, 2 #including key and alias
129
+ assert_equal RedisModelExtension::Database.redis.keys("*").size, 2 #including key and alias
107
130
  @test_model.string = "change_of_strging"
108
131
  @test_model.save
109
- assert_equal Database.redis.keys("*").size, 2 #including key and alias
132
+ assert_equal RedisModelExtension::Database.redis.keys("*").size, 2 #including key and alias
110
133
  end
111
134
 
112
135
  should "have same elements after get" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-model-extension
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-17 00:00:00.000000000 Z
12
+ date: 2012-07-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
16
- requirement: &70209861357400 !ruby/object:Gem::Requirement
16
+ requirement: &70305276410840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70209861357400
24
+ version_requirements: *70305276410840
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: i18n
27
- requirement: &70209861356840 !ruby/object:Gem::Requirement
27
+ requirement: &70305276528280 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70209861356840
35
+ version_requirements: *70305276528280
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &70209861417400 !ruby/object:Gem::Requirement
38
+ requirement: &70305276527660 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.1.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70209861417400
46
+ version_requirements: *70305276527660
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &70209861416880 !ruby/object:Gem::Requirement
49
+ requirement: &70305276526760 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70209861416880
57
+ version_requirements: *70305276526760
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rack
60
- requirement: &70209861416220 !ruby/object:Gem::Requirement
60
+ requirement: &70305276524500 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.3.0
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70209861416220
68
+ version_requirements: *70305276524500
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: shoulda
71
- requirement: &70209861415420 !ruby/object:Gem::Requirement
71
+ requirement: &70305276520460 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70209861415420
79
+ version_requirements: *70305276520460
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: shoulda-context
82
- requirement: &70209861413780 !ruby/object:Gem::Requirement
82
+ requirement: &70305276495380 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70209861413780
90
+ version_requirements: *70305276495380
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rdoc
93
- requirement: &70209861410960 !ruby/object:Gem::Requirement
93
+ requirement: &70305276494300 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '3.12'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70209861410960
101
+ version_requirements: *70305276494300
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: bundler
104
- requirement: &70209861283760 !ruby/object:Gem::Requirement
104
+ requirement: &70305276493040 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 1.0.0
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70209861283760
112
+ version_requirements: *70305276493040
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: jeweler
115
- requirement: &70209861282480 !ruby/object:Gem::Requirement
115
+ requirement: &70305276492000 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 1.8.3
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70209861282480
123
+ version_requirements: *70305276492000
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: turn
126
- requirement: &70209861281040 !ruby/object:Gem::Requirement
126
+ requirement: &70305276491180 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 0.8.2
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70209861281040
134
+ version_requirements: *70305276491180
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: minitest
137
- requirement: &70209861280120 !ruby/object:Gem::Requirement
137
+ requirement: &70305276490680 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: '0'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *70209861280120
145
+ version_requirements: *70305276490680
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: ansi
148
- requirement: &70209861279180 !ruby/object:Gem::Requirement
148
+ requirement: &70305276490000 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ~>
@@ -153,7 +153,7 @@ dependencies:
153
153
  version: 1.2.5
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *70209861279180
156
+ version_requirements: *70305276490000
157
157
  description: It provides functions as find, find_by_alias, get, exists?, validate,
158
158
  save etc.
159
159
  email: ondrej@bartas.cz
@@ -177,6 +177,7 @@ files:
177
177
  - redis-model-extension.gemspec
178
178
  - redis-model.gemspec
179
179
  - test/helper.rb
180
+ - test/test_database_module.rb
180
181
  - test/test_redis-model-extension.rb
181
182
  homepage: http://github.com/ondrejbartas/redis-model-extension
182
183
  licenses:
@@ -193,7 +194,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
193
194
  version: '0'
194
195
  segments:
195
196
  - 0
196
- hash: 510311586469191495
197
+ hash: 1302206026057497451
197
198
  required_rubygems_version: !ruby/object:Gem::Requirement
198
199
  none: false
199
200
  requirements: