Skip to content

Commit e89b2d8

Browse files
committed
Support configuring custom keys via method invocation
1 parent c5d5042 commit e89b2d8

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

lib/kredis/attributes.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ def kredis_key_evaluated(key)
9797
case key
9898
when String then key
9999
when Proc then key.call(self)
100+
when Symbol then send(key)
100101
end
101102
end
102103

test/attributes_test.rb

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ class Person
88
kredis_proxy :nothing, key: "something:else"
99
kredis_proxy :something, key: ->(p) { "person:#{p.id}:something" }
1010
kredis_list :names
11-
kredis_list :names_with_custom_key, key: ->(p) { "person:#{p.id}:names_customized" }
11+
kredis_list :names_with_custom_key_via_lambda, key: ->(p) { "person:#{p.id}:names_customized" }
12+
kredis_list :names_with_custom_key_via_method, key: :generate_key
1213
kredis_unique_list :skills, limit: 2
1314
kredis_flag :special
1415
kredis_flag :temporary_special, expires_in: 1.second
@@ -35,6 +36,11 @@ def self.name
3536
def id
3637
8
3738
end
39+
40+
private
41+
def generate_key
42+
"some-generated-key"
43+
end
3844
end
3945

4046
class MissingIdPerson
@@ -68,10 +74,15 @@ class AttributesTest < ActiveSupport::TestCase
6874
end
6975

7076
test "list with custom proc key" do
71-
@person.names_with_custom_key.append(%w[ david kasper ])
77+
@person.names_with_custom_key_via_lambda.append(%w[ david kasper ])
7278
assert_equal %w[ david kasper ], Kredis.redis.lrange("person:8:names_customized", 0, -1)
7379
end
7480

81+
test "list with custom method key" do
82+
@person.names_with_custom_key_via_method.append(%w[ david kasper ])
83+
assert_equal %w[ david kasper ], Kredis.redis.lrange("some-generated-key", 0, -1)
84+
end
85+
7586
test "unique list" do
7687
@person.skills.prepend(%w[ trolling photography ])
7788
@person.skills.prepend("racing")

0 commit comments

Comments
 (0)