lib/couchbase-orm/utilities/index.rb in couchbase-orm-0.0.10 vs lib/couchbase-orm/utilities/index.rb in couchbase-orm-0.0.11
- old
+ new
@@ -48,17 +48,22 @@
end
# use the bucket key as an index - lookup records by attr values
define_singleton_method(find_by_method) do |*values|
key = self.send(class_bucket_key_method, *values)
- id = self.bucket.get(key, quiet: true)
+ id = nil
+ ::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
+ id = self.bucket.get(key, quiet: true)
+ end
if id
mod = self.find_by_id(id)
return mod if mod
# Clean up record if the id doesn't exist
- self.bucket.delete(key, quiet: true)
+ ::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
+ self.bucket.delete(key, quiet: true)
+ end
end
nil
end
@@ -96,21 +101,27 @@
# after the values are persisted, delete the previous key and store the
# new one. the id of the current record is used as the key's value.
after_save do |record|
original_key = instance_variable_get(original_bucket_key_var)
- record.class.bucket.delete(original_key, quiet: true) if original_key
+ ::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
+ record.class.bucket.delete(original_key, quiet: true) if original_key
+ end
unless presence == false && attrs.length == 1 && record[attrs[0]].nil?
- record.class.bucket.set(record.send(bucket_key_method), record.id, plain: true)
+ ::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
+ record.class.bucket.set(record.send(bucket_key_method), record.id, plain: true)
+ end
end
instance_variable_set(original_bucket_key_var, nil)
end
# cleanup by removing the bucket key before the record is deleted
# TODO: handle unpersisted, modified component values
before_destroy do |record|
- record.class.bucket.delete(record.send(bucket_key_method), quiet: true)
+ ::ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
+ record.class.bucket.delete(record.send(bucket_key_method), quiet: true)
+ end
true
end
# return the name used to construct the added method names so other
# code can call the special index methods easily