active_redis 0.0.1

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ Mzc0OWM3NzZhZmM1ZTViNWU1NmJlNDI3MzAyM2QyMDEzZDA1MmUzZg==
5
+ data.tar.gz: !binary |-
6
+ OWM3MjQwNTU2NDFjZDBmMzg5NWY5NjRjZGYyYmEwMGQzMDhlZTJhMA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZmQzNzNlZjQzZTMxMDA0MmI2YjA3MWQzNWUzNDdjY2UwZDA5MWFkNzQ3MzI3
10
+ MzUwYTMyZjEyMmY5YTU2YzJjN2NiZjM4ZGRhODc0NTY2MWY3MTcyMDViYjI2
11
+ YzhmZmZhMGRmZjU0NDBlZWFiYmE3ZjVmOWQyZDZhMmI3OTI0MDI=
12
+ data.tar.gz: !binary |-
13
+ ZmIyNTYzNjE0OTY0ZmIzZTkwOGY1OGU3MTcyYmIyNTk5NjY0M2UxNjM0YmQ4
14
+ OTU3OWUwNDQwYTEyNTk5OTg0ODhjOWY5YzlkYjJmMDk4OTdmZWQ2ZDgwZWVl
15
+ M2E5ODUxMzExYzEwMzViZTFmMmY5YjIwMDNkODU0ODllMThkMjY=
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in active_redis.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 sergio1990
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,97 @@
1
+ # ActiveRedis
2
+
3
+ Small childly ORM for Redis
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'active_redis'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install active_redis
18
+
19
+ ## Usage
20
+
21
+ ### Basic usage
22
+
23
+ ```ruby
24
+ class Article < ActiveRedis::Base
25
+ attributes :title, :link
26
+ end
27
+ ```
28
+
29
+ By class method __attributes__ you must define own attributes.
30
+
31
+ ### Attribute accessing
32
+
33
+ By using accessible methods
34
+
35
+ ```ruby
36
+ article = Article.new
37
+ article.title = "Some title"
38
+ article.link = "http://someblog.com/1"
39
+
40
+ p article.title # => Some title
41
+ p article.link # => http://someblog.com/1
42
+ ```
43
+
44
+ Or by __attributes__ method
45
+
46
+ ```ruby
47
+ article = Article.new
48
+ article.attributes = {title: "Some title", link: "http://someblog.com/1"}
49
+
50
+ p article.attributes # => {title: "Some title", link: "http://someblog.com/1"}
51
+ p article.title # => Some title
52
+ p article.link # => http://someblog.com/1
53
+ ```
54
+
55
+ ### Persistence
56
+
57
+ ActiveRedis::Base inherited model respond to all CRUD method such as create, update, destroy and save
58
+
59
+ ```ruby
60
+ article = Article.new(title: "Some title", link: "http://someblog.com/1")
61
+ article.save # => true
62
+
63
+ another_article = Article.create(title: "Another title", link: "http://someblog.com/2") # => true
64
+
65
+ article.update(title: "New article title") # => true
66
+
67
+ p article.title # => New article title
68
+
69
+ another_article.destroy
70
+ ```
71
+
72
+ ### Finders and Calculations
73
+
74
+ Now you may find 'row' by it's id
75
+
76
+ ```ruby
77
+ Article.find(1) # => [#<Article:0x007fec2526f4f8 @updated_at="1382608780", @link="http://someblog.com/1", @id="1", @title="Some title", @created_at="1382608780">]
78
+ ```
79
+
80
+ Now gem add support for some aggregation functions like __sum__, __min__, __max__, __pluck__.
81
+
82
+ ### Future work
83
+
84
+ At an early time I want to implement such features:
85
+
86
+ 1. Add finders like ActiveRecord's where
87
+ 2. Add _all_ class method
88
+ 3. Add associations
89
+ 4. Setting/getting attributes with it's types
90
+
91
+ ## Contributing
92
+
93
+ 1. Fork it
94
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
95
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
96
+ 4. Push to the branch (`git push origin my-new-feature`)
97
+ 5. Create new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rake/notes/rake_task'
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'active_redis/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "active_redis"
8
+ spec.version = ActiveRedis::VERSION
9
+ spec.authors = ["Sergey Gernyak"]
10
+ spec.email = ["sergeg1990@gmail.com"]
11
+ spec.description = %q{Small childly ORM for Redis}
12
+ spec.summary = spec.description
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "redis"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rake-notes"
26
+ end
@@ -0,0 +1,24 @@
1
+ require "active_redis/version"
2
+ require "active_redis/errors"
3
+ require "active_redis/railtie" if defined?(Rails)
4
+
5
+ module ActiveRedis
6
+ autoload :Constants, 'active_redis/constants'
7
+ autoload :Config, 'active_redis/config'
8
+ autoload :Base, 'active_redis/base'
9
+ autoload :Connection, 'active_redis/connection'
10
+
11
+ def self.config(&block)
12
+ @config ||= ::ActiveRedis::Config.new
13
+ block_given? ? yield(@config) : @config
14
+ end
15
+
16
+ def self.connection
17
+ raise ActiveRedis::NoConnectionError, "Connection not provided!" unless @connection
18
+ @connection
19
+ end
20
+
21
+ def self.connection=(value)
22
+ @connection = value
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ require 'delegate'
2
+ require 'redis'
3
+
4
+ module ActiveRedis
5
+ module Adapters
6
+
7
+ class BasicAdapter < SimpleDelegator
8
+
9
+ alias_method :adapter, :__getobj__
10
+
11
+ def initialize(options)
12
+ redis = Redis.new(options)
13
+ super(redis)
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ module ActiveRedis
2
+ module Associations
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+
10
+ # TODO: add has_one functionality
11
+ def has_one
12
+
13
+ end
14
+
15
+ # TODO: add has_many functionality
16
+ def has_many
17
+
18
+ end
19
+
20
+ # TODO: add belongs_to functionality
21
+ def belongs_to
22
+
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,41 @@
1
+ module ActiveRedis
2
+ module Attributes
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ def attributes=(value)
9
+ raise ActiveRedis::InvalidArgumentError, "Value must be a Hash" unless value.is_a? Hash
10
+ value.each { |attribute, value| self.send("#{attribute}=", value) }
11
+ end
12
+
13
+ def attributes
14
+ self.class.defined_attributes.inject({}) do |hash, attribute|
15
+ hash[attribute.to_sym] = self.send(attribute.to_s)
16
+ hash
17
+ end
18
+ end
19
+
20
+ module ClassMethods
21
+
22
+ def attributes(*attrs)
23
+ attrs = attrs.concat(ActiveRedis::Constants::DEFAULT_ATTRIBUTES)
24
+ attrs.each do |attribute|
25
+ define_method "#{attribute}=" do |value|
26
+ instance_variable_set("@#{attribute}", value)
27
+ end
28
+ define_method attribute do
29
+ instance_variable_get("@#{attribute}")
30
+ end
31
+ end
32
+ class << self
33
+ attr_accessor :defined_attributes
34
+ end
35
+ self.defined_attributes = attrs
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,21 @@
1
+ require 'active_redis/attributes'
2
+ require 'active_redis/associations'
3
+ require 'active_redis/persistence'
4
+ require 'active_redis/naming'
5
+ require 'active_redis/calculations'
6
+ require 'active_redis/finders'
7
+
8
+ # TODO: Add Expiring module
9
+
10
+ module ActiveRedis
11
+ class Base
12
+ extend Naming
13
+ extend Calculations
14
+ extend Finders
15
+
16
+ include Attributes
17
+ include Associations
18
+ include Persistence
19
+
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ module ActiveRedis
2
+ module Calculations
3
+
4
+ def self.extended(base)
5
+ ActiveRedis::Constants::CALCULATION_METHODS.each do |method|
6
+ base.instance_eval <<-EVAL
7
+ def #{method}(attribute = "")
8
+ ActiveRedis.connection.calculate_#{method} self, attribute
9
+ end
10
+ EVAL
11
+ end
12
+ end
13
+
14
+ # TODO: add average method
15
+
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ class ActiveRedis::Config
2
+ # Specify connection string to Redis. To check all available options please see redis-rb library.
3
+ #
4
+ # Some samples:
5
+ # ActiveRedis.config.connection_options = {host: 10.10.1.1, port: 6380}
6
+ # or
7
+ # ActiveRedis.config.connection_options = {path: '/tmp/redis.sock'}
8
+ attr_accessor :connection_options
9
+
10
+ # Specify adapter for connection to DB
11
+ # By default it's ActiveRedis::Adapters::BasicAdapter
12
+ attr_accessor :adapter
13
+
14
+ end
@@ -0,0 +1,22 @@
1
+ require 'active_redis/helpers/lua_scripts'
2
+ Dir[File.dirname(__FILE__) + '/connection_ext/*.rb'].each {|file| require file }
3
+
4
+ include ActiveRedis::Helpers::LuaScripts
5
+
6
+ module ActiveRedis
7
+ class Connection
8
+ extend ActiveRedis::ConnectionExt::CalculationsLayer
9
+
10
+ include ActiveRedis::ConnectionExt::FindersLayer
11
+ include ActiveRedis::ConnectionExt::PersistenceLayer
12
+
13
+ calculations ActiveRedis::Constants::CALCULATION_METHODS
14
+
15
+ def initialize(options, adapter)
16
+ @adapter = adapter.new(options)
17
+ end
18
+
19
+ attr_accessor :adapter
20
+
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ module ActiveRedis::ConnectionExt
2
+ module CalculationsLayer
3
+
4
+ def self.extended(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+
10
+ def calculations(methods)
11
+ eval_string = ""
12
+ methods.each do |method|
13
+ eval_string += <<-EVAL
14
+ def calculate_#{method}(model, attributes = "")
15
+ adapter.eval send("#{method}_script"), keys: [model.key_name], argv: [attributes]
16
+ end
17
+ EVAL
18
+ end
19
+ class_eval(eval_string)
20
+ end
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ module ActiveRedis::ConnectionExt
2
+ module FindersLayer
3
+
4
+ def fetch_row(model, id)
5
+ raise ActiveRedis::NotSpecifiedIdError, "Must specified ID for finding record!" unless id
6
+ adapter.hgetall model.table_name(id)
7
+ end
8
+
9
+ def fetch_keys(model)
10
+ adapter.keys model.key_name
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,35 @@
1
+ module ActiveRedis::ConnectionExt
2
+ module PersistenceLayer
3
+
4
+ def save_table(model, attributes)
5
+ raise ActiveRedis::NotSpecifiedIdError, "Must specified ID for saving record!" if !attributes || !attributes[:id]
6
+ adapter.hmset(model.table_name(attributes[:id]), attributes.flatten) == ActiveRedis::Constants::SAVE_SUCCESS_ANSWER
7
+ end
8
+
9
+ def next_id(model)
10
+ table = model.info_table_name
11
+ create_info_table(model) unless @adapter.exists(table)
12
+ adapter.hincrby table, "next_id", 1
13
+ adapter.hget table, "next_id"
14
+ end
15
+
16
+ def create_info_table(model)
17
+ adapter.hmset model.info_table_name, "next_id", 0
18
+ end
19
+
20
+ def destroy(model, id)
21
+ raise ActiveRedis::NotSpecifiedIdError, "Must specified ID for destroy record!" unless id
22
+ destroy_by_keys model.table_name(id)
23
+ end
24
+
25
+ def destroy_all(model)
26
+ destroy_by_keys fetch_keys(model)
27
+ end
28
+
29
+ private
30
+ def destroy_by_keys(keys)
31
+ adapter.del keys
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,11 @@
1
+ module ActiveRedis
2
+ module Constants
3
+
4
+ CALCULATION_METHODS = %w{count min max sum pluck}
5
+
6
+ SAVE_SUCCESS_ANSWER = "OK"
7
+
8
+ DEFAULT_ATTRIBUTES = [:id, :created_at, :updated_at]
9
+
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ module ActiveRedis
2
+
3
+ class NoConnectionError < ::StandardError
4
+ end
5
+
6
+ class NotSpecifiedIdError < ::StandardError
7
+ end
8
+
9
+ class InvalidArgumentError < ::StandardError
10
+ end
11
+
12
+ end
@@ -0,0 +1,11 @@
1
+ module ActiveRedis
2
+ module Finders
3
+
4
+ def find(*ids)
5
+ ids.map { |id| self.new(ActiveRedis.connection.fetch_row(self, id)) }
6
+ end
7
+
8
+ # TODO: Add finders methods like where
9
+
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ module ActiveRedis
2
+ module Helpers
3
+ module LuaScripts
4
+
5
+ ActiveRedis::Constants::CALCULATION_METHODS.each do |method|
6
+ define_method "#{method}_script" do
7
+ <<-LUA
8
+ #{LuaLoader.get_main}
9
+ return calculate_#{method}(KEYS[1]#{method == "count" ? "" : ", ARGV[1]"})
10
+ LUA
11
+ end
12
+ end
13
+
14
+ class LuaLoader
15
+
16
+ def self.get_main
17
+ @content ||= File.read(File.dirname(__FILE__) + '/../lua_scripts/main.lua')
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,50 @@
1
+ local keys = function (k)
2
+ return redis.call("KEYS", k)
3
+ end
4
+
5
+ local cond_tonum = function (value, tonum)
6
+ if tonum == true then
7
+ return tonumber(value)
8
+ else
9
+ return value
10
+ end
11
+ end
12
+
13
+ local getHashValues = function (k, attr, tonum)
14
+ local result = {}
15
+ local ks = keys(k)
16
+ for index, key in pairs(ks) do
17
+ local cell = redis.call("HGET", key, attr)
18
+ table.insert(result, cond_tonum(cell, tonum))
19
+ end
20
+ return result
21
+ end
22
+
23
+ local calculate_count = function (key)
24
+ return #keys(key)
25
+ end
26
+
27
+ local calculate_pluck = function (key, attr)
28
+ return getHashValues(key, attr, false)
29
+ end
30
+
31
+ local calculate_max = function (key, attr)
32
+ local res = getHashValues(key, attr, true)
33
+ table.sort(res)
34
+ return res[#res]
35
+ end
36
+
37
+ local calculate_min = function (key, attr)
38
+ local res = getHashValues(key, attr, true)
39
+ table.sort(res)
40
+ return res[1]
41
+ end
42
+
43
+ local calculate_sum = function (key, attr)
44
+ local res = getHashValues(key, attr, true)
45
+ local sum = 0
46
+ for index, s in pairs(res) do
47
+ sum = sum + s
48
+ end
49
+ return sum
50
+ end
@@ -0,0 +1,19 @@
1
+ module ActiveRedis
2
+
3
+ module Naming
4
+
5
+ def table_name(id = "")
6
+ "#{self.name.downcase.pluralize}:item:#{id}"
7
+ end
8
+
9
+ def key_name
10
+ "#{table_name}*"
11
+ end
12
+
13
+ def info_table_name
14
+ "#{self.name.downcase.pluralize}:info"
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -0,0 +1,55 @@
1
+ module ActiveRedis
2
+ module Persistence
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ def initialize(attrs = {})
9
+ self.attributes = attrs
10
+ end
11
+
12
+ def save
13
+ ActiveRedis.connection.save_table self.class, prepare_hash
14
+ end
15
+
16
+ def destroy
17
+ ActiveRedis.connection.destroy self.class, self.id
18
+ end
19
+
20
+ def update(attrs = {})
21
+ self.attributes = attrs
22
+ self.save
23
+ end
24
+
25
+ private
26
+
27
+ def fill_attributes
28
+ self.id ||= ActiveRedis.connection.next_id(self.class)
29
+ self.created_at ||= Time.now.to_i
30
+ self.updated_at = Time.now.to_i
31
+ end
32
+
33
+ def prepare_hash
34
+ fill_attributes
35
+ self.class.defined_attributes.inject({}) do |hash, attribute|
36
+ hash[attribute] = self.send("#{attribute}"); hash
37
+ end
38
+ end
39
+
40
+ module ClassMethods
41
+
42
+ def create(attrs = {})
43
+ self.new(attrs).tap do |model|
44
+ model.save
45
+ end
46
+ end
47
+
48
+ def destroy_all
49
+ ActiveRedis.connection.destroy_all self
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+ end
@@ -0,0 +1,12 @@
1
+ require 'active_redis/adapters/basic_adapter'
2
+
3
+ module ActiveRedis
4
+ class Railtie < Rails::Railtie
5
+ config.after_initialize do
6
+ ActiveRedis.connection = ActiveRedis::Connection.new(
7
+ ActiveRedis.config.connection_options || {},
8
+ ActiveRedis.config.adapter || ActiveRedis::Adapters::BasicAdapter
9
+ )
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module ActiveRedis
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: active_redis
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sergey Gernyak
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ! '>='
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ name: redis
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '1.3'
33
+ type: :development
34
+ prerelease: false
35
+ name: bundler
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :development
48
+ prerelease: false
49
+ name: rake
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :development
62
+ prerelease: false
63
+ name: rake-notes
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Small childly ORM for Redis
70
+ email:
71
+ - sergeg1990@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - Gemfile
78
+ - LICENSE.txt
79
+ - README.md
80
+ - Rakefile
81
+ - active_redis.gemspec
82
+ - lib/active_redis.rb
83
+ - lib/active_redis/adapters/basic_adapter.rb
84
+ - lib/active_redis/associations.rb
85
+ - lib/active_redis/attributes.rb
86
+ - lib/active_redis/base.rb
87
+ - lib/active_redis/calculations.rb
88
+ - lib/active_redis/config.rb
89
+ - lib/active_redis/connection.rb
90
+ - lib/active_redis/connection_ext/calculations_layer.rb
91
+ - lib/active_redis/connection_ext/finders_layer.rb
92
+ - lib/active_redis/connection_ext/persistence_layer.rb
93
+ - lib/active_redis/constants.rb
94
+ - lib/active_redis/errors.rb
95
+ - lib/active_redis/finders.rb
96
+ - lib/active_redis/helpers/lua_scripts.rb
97
+ - lib/active_redis/lua_scripts/main.lua
98
+ - lib/active_redis/naming.rb
99
+ - lib/active_redis/persistence.rb
100
+ - lib/active_redis/railtie.rb
101
+ - lib/active_redis/version.rb
102
+ homepage: ''
103
+ licenses:
104
+ - MIT
105
+ metadata: {}
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubyforge_project:
122
+ rubygems_version: 2.0.6
123
+ signing_key:
124
+ specification_version: 4
125
+ summary: Small childly ORM for Redis
126
+ test_files: []