active_redis_orm 0.0.10 → 0.1.1

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: 835629f57538a971822d8594eb11be972232c5d1
4
- data.tar.gz: 417ff294268b204aa1e2f22d865a36de727fd1bc
3
+ metadata.gz: 899ade6f6bc04ef66e156a453353590f4d66289b
4
+ data.tar.gz: e80082d10320bfdc323dda8673341ad443864e45
5
5
  SHA512:
6
- metadata.gz: d8dc8e27c8638a909e9d0c5157c6e6835735fa8db5d92a8211e5ef01a43c31668bd34c19ba0465a5c8713c8f5508c88cc7ddc71f89ae5361a90ba2c8935a5951
7
- data.tar.gz: 4f9d501a9a4516a9fcfe2ddba2402e6c28dd32e1df17a1e865b231c26bbe82e9aa2ee64b9d95e626e02d59582992b829128f02878238b45c8d09bbf74c34a334
6
+ metadata.gz: 86ae6af995214ec4443333edc352e5ff8e4953ad8a03c0d9e7dd879947897d7f97f65c7f11915ac8e6f8c0df57a0557d0eb4756dbee7e859e18d50e193fc0f0a
7
+ data.tar.gz: 145d76d2954de1e367a315ece73bf18d36d6de24a0ba838962347aeafc10a3ddc05696f37a138c2b9e0ea9d99b24db82803cbd1d4c4c5ae24e59a441f519e080
data/README.md CHANGED
@@ -1,6 +1,4 @@
1
- # ActiveRedisOrm
2
-
3
- TODO: Write a gem description
1
+ # ActiveRedis
4
2
 
5
3
  ## Installation
6
4
 
@@ -18,7 +16,102 @@ Or install it yourself as:
18
16
 
19
17
  ## Usage
20
18
 
21
- TODO: Write usage instructions here
19
+ In an initializer, make sure that you're using the correct connection:
20
+
21
+
22
+ ```ruby
23
+ ActiveRedis.redis = Redis.new(connection_details)
24
+ ```
25
+
26
+ Creating an ActiveRedis class looks like a combination of ActiveRecord and Mongoid:
27
+
28
+ ```ruby
29
+ class User < ActiveRedis::Base
30
+ field :username, finder_field: true
31
+ field :name
32
+ field :birthday, type: :date
33
+ field :age, type: :integer, default: lambda{|user| user.age_from_birthday}
34
+ field :things, type: :set
35
+ end
36
+ ```
37
+
38
+ Declaring fields is similar to Mongoid - you declare the field, and its type (the default is string). We use symbols for type, unlike Mongoid which uses the data type's class.
39
+
40
+ Available types are: :string, :set, :sorted_set, :list, :hash, :float, :integer (or :int), :counter, :boolean, :date, :time (or :datetime, :timestamp).
41
+
42
+ You can declare a default value with either a value or a lambda.
43
+
44
+
45
+ ### Finder Fields
46
+
47
+ When you want to be able to find an object by something other than its ID, you can define an index by stating a field to be a finder_field. This will allow you to do this:
48
+
49
+ ```ruby
50
+ User.create(username: "some_guy")
51
+
52
+ User.find_by_username("some_guy") #=> our user
53
+ ```
54
+
55
+ ### Redis Data Structures
56
+
57
+ Using hashes, sets, sorted sets and lists is simple-ish.
58
+
59
+
60
+ Hash simply acts like a hash
61
+
62
+
63
+ Sets and Lists act like any ruby array
64
+
65
+
66
+ Sorted sets' getters act as an array, but setters are hash-like, where the hash key is the value and hash value is the score. Yes, it's a bit confusing.
67
+
68
+ ```ruby
69
+ class User < ActiveRedis::Base
70
+ field :foo, type: :sorted_set
71
+ end
72
+
73
+ user = User.new
74
+
75
+ user.foo["value2"] = 1
76
+
77
+ user.foo["value1"] = 0
78
+ user.save
79
+
80
+ user.foo #=> ["value1", "value2"]
81
+ ```
82
+
83
+ ## Callbacks and Validations
84
+
85
+ Callbacks and validations work just like in Mongoid or ActiveRecord
86
+
87
+ ```ruby
88
+ class Messages < ActiveRedis::Base
89
+ include ActiveRedis::Timestamps
90
+
91
+ field :text
92
+ field :user_id
93
+
94
+ validates :text, presence: true, length: {maximum: 256}
95
+ validates :user_id, presence: true
96
+
97
+ after_create :do_something
98
+
99
+ def do_something
100
+ #this gets called after create
101
+ end
102
+ end
103
+
104
+ message = Message.new(text: "I am new text")
105
+ message.save #=> false
106
+
107
+ message.errors.messages #=> {:user_id=>["can't be blank"]}
108
+ ```
109
+
110
+ available callbacks are before/after/around for create/update/save
111
+
112
+
113
+ available validations are any validations which come with ActiveModel (we're still missing the uniqueness validation, as it's a problem in redis, but it'll happen)
114
+
22
115
 
23
116
  ## Contributing
24
117
 
@@ -445,7 +445,7 @@ module ActiveRedis
445
445
 
446
446
  class_eval %Q{
447
447
  def self.find_by_#{field_name}(value)
448
- id = Redis.current.get(finder_key(:#{field_name}, value))
448
+ id = ActiveRedis.redis.get(finder_key(:#{field_name}, value))
449
449
  if id.present?
450
450
  self.find(id)
451
451
  else
@@ -27,7 +27,7 @@ module ActiveRedis
27
27
 
28
28
  def perform_save
29
29
  run_callbacks :save do
30
- Redis.current.pipelined do
30
+ ActiveRedis.redis.pipelined do
31
31
  self.changes.each do |key, value|
32
32
  if value.last.nil?
33
33
  send("#{key}_object").delete
@@ -1,3 +1,3 @@
1
1
  module ActiveRedis
2
- VERSION = "0.0.10"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_redis_orm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Caspy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-03 00:00:00.000000000 Z
11
+ date: 2014-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler