redis_storage 0.2.3

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/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ tmp/*
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/.rvmrc ADDED
@@ -0,0 +1,9 @@
1
+ #rvm use rbx-2.0.0pre@redisrecord --create
2
+ #export RBXOPT=-Xrbc.db=$HOME/.rbx
3
+ rvm use ree@redisrecord --create
4
+
5
+ if ! command -v bundle ; then
6
+ gem install bundler
7
+ fi
8
+ # Bundle while redcing excess noise.
9
+ bundle | grep -v 'Using' | grep -v 'complete' | sed '/^$/d'
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in redis_record.gemspec
4
+ gemspec
5
+
6
+ group :development do
7
+ # irb stuff
8
+ gem 'wirble'
9
+ gem 'hirb'
10
+ gem 'awesome_print'
11
+ gem 'bond'
12
+ gem 'sketches'
13
+ end
data/README ADDED
@@ -0,0 +1,82 @@
1
+ RedisStorage
2
+ ---
3
+
4
+ * some kind of database mapper for redis on rails
5
+ * uses ActiveModel to provide things like validations
6
+ * provides a Rails 3 Generator
7
+
8
+ Installation
9
+ ---
10
+
11
+ As this gem need redis running you will have to install it(see redis.io for more information on that task)
12
+
13
+ Then just add the gem to your Gemfile and run bundler
14
+
15
+ gem 'redis_storage'
16
+
17
+ or just install it manually
18
+
19
+ gem install redis_storage
20
+
21
+ Then this gem will need a global object $db which just is a Redis connection.
22
+
23
+ redis_config = { :host => 'localhost', :port => 6379, :password => '', :db => 1 }
24
+ $db = Redis.new(redis_config)
25
+
26
+ Usage
27
+ ---
28
+
29
+ require the gem in your code
30
+
31
+ require 'redis_storage'
32
+
33
+ create a model which inherit from RedisStorage::Model
34
+
35
+ class MyModel < RedisStorage::Model
36
+ ...
37
+ end
38
+
39
+ and define the models attributes via self.attrs, additional to the defined attributes there will always be an attribute id
40
+
41
+ def self.attrs
42
+ [:body, :title]
43
+ end
44
+ attr_accessor *attrs
45
+
46
+ Minimal Example
47
+ ---
48
+
49
+ require 'redis_storage'
50
+ class MyModel < RedisStorage::Model
51
+ def self.attrs
52
+ [:body, :title]
53
+ end
54
+ attr_accessor *attrs
55
+ end
56
+
57
+ Rails 3 Integration
58
+ ---
59
+
60
+ to initialize redis there is a rake task
61
+
62
+ rake install_redis
63
+
64
+ The task will install a initializer file which creates the above mentioned $db object and a redis.yml file to configure the redis connection.
65
+
66
+ There is also a Rails 3 Generator which will generates the above mentioned model
67
+
68
+ rails g redis model attr1 attr2
69
+
70
+ or
71
+
72
+ rails g scaffold model attr1:string attr2:int -o redis
73
+
74
+ meta
75
+ ---
76
+
77
+ Inspired by
78
+
79
+ * some ideas from the redis backend in [scanty-redis](https://github.com/adamwiggins/scanty-redis)
80
+ * various small sinatra projects from myself which use a pre version of this gem
81
+
82
+ sch1zo
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ include Rake::DSL
2
+ require 'bundler'
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ require 'rspec/core/rake_task'
6
+ RSpec::Core::RakeTask.new('spec')
7
+
8
+ # If you want to make this the default task
9
+ task :default => :spec
@@ -0,0 +1,17 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/named_base'
3
+
4
+ module Rails
5
+ module Generators
6
+ class RedisGenerator < Rails::Generators::NamedBase
7
+ source_root File.expand_path('../../templates', __FILE__)
8
+ argument :attrs, :type => :array, :default => [], :banner => "field field"
9
+ check_class_collision
10
+ desc "This generator creates an model for redis"
11
+
12
+ def create_model_file
13
+ template 'model.rb', File.join('app/models',class_path,"#{file_name}.rb")
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,6 @@
1
+ class <%= class_name %> < RedisStorage::Model
2
+ def self.attrs
3
+ [ :id<%=", :" unless attrs.empty?%><%= attrs.map{|e| e.split(':')[0]}.join(', :') %> ]
4
+ end
5
+ attr_accessor *attrs
6
+ end
@@ -0,0 +1,13 @@
1
+ require 'redis_storage'
2
+ module RedisStorage
3
+ class Railtie <::Rails::Railtie
4
+ rake_tasks do
5
+ load "tasks/redis_storage.rake"
6
+ end
7
+ #if ::Rails.version.to_f >= 3.1
8
+ # config.app_generators.orm :redis
9
+ #else
10
+ # config.generators.orm :redis
11
+ #end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ module RedisStorage
2
+ VERSION = "0.2.3"
3
+ end
@@ -0,0 +1,124 @@
1
+ require 'json'
2
+ require 'active_model'
3
+
4
+ module RedisStorage
5
+ require 'redis_storage/railtie' if defined?(Rails)
6
+
7
+ class Model
8
+ include ActiveModel::Validations
9
+ include ActiveModel::Conversion
10
+ extend ActiveModel::Naming
11
+
12
+ validates_presence_of :id
13
+
14
+ def self.attrs
15
+ []
16
+ end
17
+
18
+ attr_accessor *attrs
19
+ attr_accessor :id
20
+ attr_reader :errors
21
+
22
+ def self.build(params)
23
+ new params
24
+ end
25
+
26
+ def self.create(params)
27
+ obj = build params
28
+ obj.save
29
+ obj
30
+ end
31
+
32
+ def self.find(params=nil)
33
+ return find_by_id(params) unless params.nil? #TODO perhaps make this at some point more generic
34
+ return all
35
+ end
36
+ def self.find_by_id(entry_id)
37
+ r = $db.get("#{db_key}:#{entry_id}")
38
+ new(JSON.parse(r)) unless r.nil?
39
+ end
40
+
41
+ def self.all
42
+ keys = $db.smembers("#{db_key}:persisted").map do |i|
43
+ "#{db_key}:#{i}"
44
+ end
45
+
46
+ if keys.empty?
47
+ []
48
+ else
49
+ $db.mget(*keys).inject([]) do |a,json|
50
+ a << new(JSON.parse(json))
51
+ end
52
+ end
53
+ end
54
+
55
+ def serializable_hash
56
+ self.class.attrs.inject({:id => @id}) do |a,key|
57
+ a[key] = send(key)
58
+ a
59
+ end
60
+ end
61
+ def to_json
62
+ serializable_hash.to_json
63
+ end
64
+
65
+ def update_attributes(params)
66
+ params.each do |key, value|
67
+ send("#{key}=", value) unless key.to_sym == :id
68
+ end
69
+ save
70
+ end
71
+ def save
72
+ unless persisted?
73
+ @id = $db.incr("#{db_key}:nextid")
74
+ end
75
+ if valid?
76
+ $db.multi do
77
+ $db.set db_key, serializable_hash.to_json
78
+ $db.sadd "#{self.class.db_key}:persisted", id
79
+ end
80
+ @id
81
+ else
82
+ nil
83
+ end
84
+ end
85
+
86
+ def destroy
87
+ delete! #for the default rails controller
88
+ end
89
+ def delete!
90
+ if persisted?
91
+ $db.multi do
92
+ $db.del db_key
93
+ $db.srem "#{self.class.db_key}:persisted", id
94
+ end
95
+ true
96
+ else
97
+ false
98
+ end
99
+ end
100
+
101
+ def persisted?
102
+ if id.nil?
103
+ false
104
+ else
105
+ $db.sismember("#{self.class.db_key}:persisted", id)
106
+ end
107
+ end
108
+
109
+ def self.db_key
110
+ model_name.downcase
111
+ end
112
+ def db_key
113
+ "#{self.class.db_key}:#{self.id}"
114
+ end
115
+
116
+ def initialize(params={})
117
+ @id = nil
118
+ @errors = ActiveModel::Errors.new(self)
119
+ params.each do |key, value|
120
+ send("#{key}=", value)
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,31 @@
1
+ desc "copies an initializer for redis into the app"
2
+ task :install_redis do
3
+ init= <<-INIT
4
+ require 'redis'
5
+ c = YAML.load_file("\#{::Rails.root.to_s}/config/redis.yml")[::Rails.env]
6
+ redis_config = { :host => c['host'], :port => c['port'], :password => c['password'], :db => c['db'] }
7
+
8
+ $db = Redis.new(redis_config)
9
+ INIT
10
+ yml= <<-YAML
11
+ development:
12
+ host: "localhost"
13
+ port: 6379
14
+ password:
15
+ db: 3
16
+ test:
17
+ host: "localhost"
18
+ port: 6379
19
+ password:
20
+ path: 12
21
+ productive:
22
+ host: "localhost"
23
+ port: 6379
24
+ password:
25
+ path: 1
26
+ YAML
27
+ p "create config/initializers/redis.rb"
28
+ File.open('config/initializers/redis.rb', 'w') {|f| f.write(init) }
29
+ p "create config/redis.yml"
30
+ File.open('config/redis.yml', 'w') {|f| f.write(yml) }
31
+ end
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "redis_storage/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "redis_storage"
7
+ s.version = RedisStorage::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Andreas Eger"]
10
+ s.email = ["dev@eger-andreas.de"]
11
+ s.homepage = "https://github.com/sch1zo/redis_storage"
12
+ s.summary = %q{A simple Redis ORM for Rails}
13
+ s.description = %q{Provides a databackend for a Redis in Rails, will also provide a Rails 3 Generator}
14
+
15
+ s.add_dependency 'redis'
16
+ s.add_dependency 'json'
17
+ s.add_dependency 'activemodel', '>= 3.0.0'
18
+
19
+ s.add_development_dependency 'rspec', '>= 2.0.0'
20
+ s.add_development_dependency 'mocha'
21
+ s.add_development_dependency 'autotest'
22
+ s.add_development_dependency 'redis'
23
+ s.add_development_dependency 'rails', '>= 3.0.0'
24
+
25
+ s.rubyforge_project = "redis_storage"
26
+
27
+ s.files = `git ls-files`.split("\n")
28
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
29
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
30
+ s.require_paths = ["lib"]
31
+ end
@@ -0,0 +1,174 @@
1
+ require 'spec_helper'
2
+ class MockModel < RedisStorage::Model
3
+ def self.attrs
4
+ [:body, :title]
5
+ end
6
+ attr_accessor *attrs
7
+ end
8
+
9
+ describe RedisStorage::Model do
10
+ it_should_behave_like "ActiveModel"
11
+ let(:modelhash) do
12
+ {'body'=>"Lorem Ipsum", 'title' => "some test"}
13
+ end
14
+
15
+ context 'class' do
16
+ it 'should have a db_key with the name of the class' do
17
+ MockModel.db_key.should eq('mockmodel')
18
+ end
19
+ context '#build' do
20
+ it 'should simply call new on MockModel' do
21
+ MockModel.expects(:new)
22
+ MockModel.build modelhash
23
+ end
24
+ it 'should create accessors for all hash key/value pairs' do
25
+ model = MockModel.build modelhash
26
+ model.body.should == modelhash['body']
27
+ model.title.should == modelhash['title']
28
+ end
29
+ end
30
+ context '#create' do
31
+ before(:each) do
32
+ @model = MockModel.build modelhash
33
+ end
34
+ it 'should call new to create the accessors' do
35
+ MockModel.expects(:build).returns(@model)
36
+ MockModel.create modelhash
37
+ end
38
+ it 'should call save to save the record' do
39
+ @model.expects(:save)
40
+ MockModel.stubs(:build).returns(@model)
41
+ MockModel.create modelhash
42
+ end
43
+ end
44
+ context '#find' do
45
+ let(:h) do
46
+ [ {'body' =>"Lorem Ipsum", 'title' => "first test"},
47
+ {'body' =>"Dolor Sit", 'title' => "second test"},
48
+ {'body' =>"Amet consetetur", 'title' => "third test"},
49
+ {'body' =>"sadipscing elitr", 'title' => "forth test"}]
50
+ end
51
+ before(:each) do
52
+ h.each do |e|
53
+ MockModel.create e
54
+ end
55
+ end
56
+ it 'should call .all if .find is called with no parama' do
57
+ MockModel.expects(:all)
58
+ MockModel.find
59
+ end
60
+ it 'should push the given Params from .find to .find_by_id' do
61
+ MockModel.expects(:find_by_id).with(3)
62
+ MockModel.find(3)
63
+ end
64
+ context '#find_by_id' do
65
+ 1.upto(4) do |i|
66
+ it "should find record #{i} and create a new instance" do
67
+ record = MockModel.find_by_id(i)
68
+ record.id.should == i
69
+ record.body.should == h[i-1]['body']
70
+ record.title.should == h[i-1]['title']
71
+ end
72
+ end
73
+ end
74
+ context '#all' do
75
+ it 'should return an empty array if there are no entries' do
76
+ Redis.any_instance.stubs(:smembers => [])
77
+ records = MockModel.all
78
+ records.should eq([])
79
+ end
80
+ it 'should return all entries' do
81
+ records = MockModel.all
82
+ records.size.should eq(4)
83
+ end
84
+ it 'should return an Array with all entries' do
85
+ records = MockModel.all
86
+ records.each do |m|
87
+ i = m.id
88
+ m.body.should eq(h[i-1]['body'])
89
+ m.title.should eq(h[i-1]['title'])
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
95
+
96
+ context 'instance' do
97
+ let(:model) do
98
+ model = MockModel.build modelhash
99
+ end
100
+ context '#persisted?' do
101
+ it 'should be false if it did not get saved yet' do
102
+ model.persisted?.should be_false
103
+ end
104
+ it 'should be true if the model got saved' do
105
+ model.save
106
+ model.persisted?.should be_true
107
+ end
108
+ end
109
+ context '#save' do
110
+ it 'should be valid to save the model' do
111
+ model.stubs(:valid? => true)
112
+ model.save.should_not be_nil
113
+ end
114
+ it 'should not save the model if its invalid' do
115
+ model.stubs(:valid? => false)
116
+ model.save.should be_nil
117
+ end
118
+ it 'should create a redis entry' do
119
+ id = model.save
120
+ JSON.parse($db.get("mockmodel:#{id}")).should == modelhash.merge('id'=>id)
121
+ end
122
+ it 'should add the id to the persisted set in redis' do
123
+ id = model.save
124
+ $db.sismember("mockmodel:persisted", id).should be_true
125
+ end
126
+ end
127
+ context '#update_attributes' do
128
+ it 'should take the given hash to update the attributes' do
129
+ model.update_attributes({:body => 'updated body'})
130
+ model.body.should eq('updated body')
131
+ end
132
+ it 'should call save' do
133
+ model.expects(:save=>1)
134
+ model.update_attributes({:body => 'updated body'})
135
+ end
136
+ end
137
+ context '#delete!' do
138
+ it 'should return false if the object is not persisted' do
139
+ model.stubs(:persisted? => false)
140
+ model.delete!.should be_false
141
+ end
142
+ it 'should return true if the object was persisted' do
143
+ model.stubs(:persisted? => true)
144
+ model.delete!.should be_true
145
+ end
146
+ it 'should remove the key from redis' do
147
+ id=model.save
148
+ model.delete!
149
+ $db.get("mockmodel:#{id}").should be_nil
150
+ end
151
+ it 'should remove the id from the persisted set in redis' do
152
+ id=model.save
153
+ model.delete!
154
+ $db.sismember("mockmodel:persisted", id).should be_false
155
+ end
156
+ end
157
+
158
+ #context '#dirty' do
159
+ # it 'should be true till first saved' do
160
+ # model.changed?.should be_true
161
+ # end
162
+ # it 'should be false after saving' do
163
+ # model.save
164
+ # model.changed?.should be_false
165
+ # end
166
+ # it 'should be true if something got changed since last save' do
167
+ # model.save
168
+ # model.changed?.should be_false
169
+ # model.body = 'lorem ipsum'
170
+ # model.changed?.should be_true
171
+ # end
172
+ #end
173
+ end
174
+ end
@@ -0,0 +1,34 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'lib/redis_storage' # and any other gems you need
5
+ require 'redis'
6
+
7
+ RSpec.configure do |config|
8
+ config.mock_with :mocha
9
+ config.before(:all) do
10
+ $db = Redis.new({})
11
+ end
12
+ config.before(:each) do
13
+ $db.select 12
14
+ $db.flushdb
15
+ end
16
+ end
17
+
18
+ shared_examples_for "ActiveModel" do
19
+ require 'test/unit/assertions'
20
+ require 'active_model/lint'
21
+ include Test::Unit::Assertions
22
+ include ActiveModel::Lint::Tests
23
+
24
+ # to_s is to support ruby-1.9
25
+ ActiveModel::Lint::Tests.public_instance_methods.map{|m| m.to_s}.grep(/^test/).each do |m|
26
+ example m.gsub('_',' ') do
27
+ send m
28
+ end
29
+ end
30
+
31
+ def model
32
+ subject
33
+ end
34
+ end
@@ -0,0 +1,35 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+
4
+ require 'bundler'
5
+ Bundler.setup
6
+
7
+ require 'lib/generators/rails/redis_generator'
8
+
9
+ class RedisGeneratorTest < Rails::Generators::TestCase
10
+ destination File.expand_path("../tmp", File.dirname(__FILE__))
11
+ setup :prepare_destination
12
+ tests ::Rails::Generators::RedisGenerator
13
+
14
+ test 'should create a model file with a few basic lines' do
15
+ run_generator %w(Schedule title body created_at)
16
+ assert_file 'app/models/schedule.rb', /class Schedule < RedisStorage::Model/
17
+ assert_file 'app/models/schedule.rb', /attr_accessor \*attrs/
18
+ end
19
+ test 'should set the classes attrs' do
20
+ run_generator %w(Schedule title body created_at)
21
+ assert_file 'app/models/schedule.rb' do |model|
22
+ assert_class_method :attrs, model do |attrs|
23
+ assert_match /[ :id, :title, :body, :created_at ]/, attrs
24
+ end
25
+ end
26
+ end
27
+ test 'should set id as only class attribute if none given' do
28
+ run_generator %w(Schedule title body)
29
+ assert_file 'app/models/schedule.rb' do |model|
30
+ assert_class_method :attrs, model do |attrs|
31
+ assert_match /[ :title, :body ]/, attrs
32
+ end
33
+ end
34
+ end
35
+ end
metadata ADDED
@@ -0,0 +1,198 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redis_storage
3
+ version: !ruby/object:Gem::Version
4
+ hash: 17
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 3
10
+ version: 0.2.3
11
+ platform: ruby
12
+ authors:
13
+ - Andreas Eger
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-06-24 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: redis
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: json
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: activemodel
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 7
57
+ segments:
58
+ - 3
59
+ - 0
60
+ - 0
61
+ version: 3.0.0
62
+ type: :runtime
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ name: rspec
66
+ prerelease: false
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 15
73
+ segments:
74
+ - 2
75
+ - 0
76
+ - 0
77
+ version: 2.0.0
78
+ type: :development
79
+ version_requirements: *id004
80
+ - !ruby/object:Gem::Dependency
81
+ name: mocha
82
+ prerelease: false
83
+ requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ hash: 3
89
+ segments:
90
+ - 0
91
+ version: "0"
92
+ type: :development
93
+ version_requirements: *id005
94
+ - !ruby/object:Gem::Dependency
95
+ name: autotest
96
+ prerelease: false
97
+ requirement: &id006 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ hash: 3
103
+ segments:
104
+ - 0
105
+ version: "0"
106
+ type: :development
107
+ version_requirements: *id006
108
+ - !ruby/object:Gem::Dependency
109
+ name: redis
110
+ prerelease: false
111
+ requirement: &id007 !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ hash: 3
117
+ segments:
118
+ - 0
119
+ version: "0"
120
+ type: :development
121
+ version_requirements: *id007
122
+ - !ruby/object:Gem::Dependency
123
+ name: rails
124
+ prerelease: false
125
+ requirement: &id008 !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ hash: 7
131
+ segments:
132
+ - 3
133
+ - 0
134
+ - 0
135
+ version: 3.0.0
136
+ type: :development
137
+ version_requirements: *id008
138
+ description: Provides a databackend for a Redis in Rails, will also provide a Rails 3 Generator
139
+ email:
140
+ - dev@eger-andreas.de
141
+ executables: []
142
+
143
+ extensions: []
144
+
145
+ extra_rdoc_files: []
146
+
147
+ files:
148
+ - .gitignore
149
+ - .rspec
150
+ - .rvmrc
151
+ - Gemfile
152
+ - README
153
+ - Rakefile
154
+ - lib/generators/rails/redis_generator.rb
155
+ - lib/generators/templates/model.rb
156
+ - lib/redis_storage.rb
157
+ - lib/redis_storage/railtie.rb
158
+ - lib/redis_storage/version.rb
159
+ - lib/tasks/redis_storage.rake
160
+ - redis_storage.gemspec
161
+ - spec/model_spec.rb
162
+ - spec/spec_helper.rb
163
+ - test/generator_test.rb
164
+ homepage: https://github.com/sch1zo/redis_storage
165
+ licenses: []
166
+
167
+ post_install_message:
168
+ rdoc_options: []
169
+
170
+ require_paths:
171
+ - lib
172
+ required_ruby_version: !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ hash: 3
178
+ segments:
179
+ - 0
180
+ version: "0"
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ none: false
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ hash: 3
187
+ segments:
188
+ - 0
189
+ version: "0"
190
+ requirements: []
191
+
192
+ rubyforge_project: redis_storage
193
+ rubygems_version: 1.8.5
194
+ signing_key:
195
+ specification_version: 3
196
+ summary: A simple Redis ORM for Rails
197
+ test_files: []
198
+