sandra 0.1.6 → 0.1.7
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/lib/sandra.rb +21 -1
- metadata +10 -10
data/lib/sandra.rb
CHANGED
@@ -14,8 +14,14 @@ module Sandra
|
|
14
14
|
include ActiveModel::SecurePassword
|
15
15
|
define_model_callbacks :create, :update, :save, :destroy
|
16
16
|
attr_accessor :attributes, :new_record
|
17
|
+
|
17
18
|
def initialize(attrs = {})
|
18
19
|
@attributes = attrs.stringify_keys
|
20
|
+
@unregistered_attrs = @attributes.keys - self.class.registered_columns.map(&:to_s)
|
21
|
+
@unregistered_attrs.each do |attr|
|
22
|
+
self.send("#{attr}=", @attributes[attr])
|
23
|
+
@attributes.delete(attr)
|
24
|
+
end
|
19
25
|
@new_record = true
|
20
26
|
end
|
21
27
|
end
|
@@ -60,6 +66,12 @@ module Sandra
|
|
60
66
|
attr = col_name.to_s
|
61
67
|
attributes[attr] = val
|
62
68
|
end
|
69
|
+
@registered_columns ||= []
|
70
|
+
@registered_columns << col_name
|
71
|
+
end
|
72
|
+
|
73
|
+
def registered_columns
|
74
|
+
@registered_columns + Array(@key)
|
63
75
|
end
|
64
76
|
|
65
77
|
def establish_connection(options = {})
|
@@ -74,7 +86,8 @@ module Sandra
|
|
74
86
|
end
|
75
87
|
|
76
88
|
def get(key)
|
77
|
-
|
89
|
+
return nil unless key
|
90
|
+
hash = connection.get(self.to_s, key.to_s)
|
78
91
|
unless hash.empty?
|
79
92
|
self.new_object(key, hash)
|
80
93
|
else
|
@@ -82,6 +95,10 @@ module Sandra
|
|
82
95
|
end
|
83
96
|
end
|
84
97
|
|
98
|
+
def find(key)
|
99
|
+
self.get(key)
|
100
|
+
end
|
101
|
+
|
85
102
|
def new_object(key, attributes)
|
86
103
|
obj = self.new(attributes)
|
87
104
|
obj.send("#{@key}=", key)
|
@@ -97,6 +114,9 @@ module Sandra
|
|
97
114
|
@key = name
|
98
115
|
validates name, :presence => true, :key => true
|
99
116
|
column name, type
|
117
|
+
define_method :to_param do
|
118
|
+
attributes[name.to_s]
|
119
|
+
end
|
100
120
|
end
|
101
121
|
|
102
122
|
def key
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sandra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
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-03-
|
12
|
+
date: 2012-03-07 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thrift_client
|
16
|
-
requirement: &
|
16
|
+
requirement: &70298787823620 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.8.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70298787823620
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: cassandra
|
27
|
-
requirement: &
|
27
|
+
requirement: &70298787823220 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70298787823220
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activemodel
|
38
|
-
requirement: &
|
38
|
+
requirement: &70298787822760 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70298787822760
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70298787822340 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70298787822340
|
58
58
|
description: Provides an Object Relational interface to Cassandra
|
59
59
|
email: chuck@teachmetocode.com
|
60
60
|
executables: []
|