lib/redis/objects.rb in redis-objects-0.3.0 vs lib/redis/objects.rb in redis-objects-0.3.1

- old
+ new

@@ -11,11 +11,11 @@ # # class Game < ActiveRecord::Base # include Redis::Objects # # counter :joined_players - # counter :active_players + # counter :active_players, :key => 'game:#{id}:act_plyr' # lock :archive_game # set :player_ids # end # # The, you can use these counters both for bookeeping and as atomic actions: @@ -81,21 +81,27 @@ sub(%r{(.*::)}, ''). gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). downcase end - - def field_key(name, id) #:nodoc: - "#{prefix}:#{id}:#{name}" - end + def field_key(name, id='') #:nodoc: + # This can never ever ever ever change or upgrades will corrupt all data + @redis_objects[name.to_sym][:key] || "#{prefix}:#{id}:#{name}" + end end # Instance methods that appear in your class when you include Redis::Objects. module InstanceMethods def redis() self.class.redis end def field_key(name) #:nodoc: - self.class.field_key(name, id) + # This can never ever ever ever change or upgrades will corrupt all data + if key = self.class.redis_objects[name.to_sym][:key] + eval "%(#{key})" + else + # don't try to refactor into class field_key because fucks up eval context + "#{self.class.prefix}:#{id}:#{name}" + end end end end end