Class: Moped::PromiscuousCollectionWrapper::PromiscuousCollectionOperation
Instance Attribute Summary
#instance
#operation
Class Method Summary
collapse
Instance Method Summary
collapse
#acquire_op_lock, #do_database_query, #fetch_instance, #increment_version_in_document, #operation_payloads, #query_dependencies, #reload_instance, #use_id_selector, #yell_about_missing_instance
_acquire_lock, #acquire_op_lock, #dependencies_for, #dependency_for_op_lock, #ensure_op_still_locked, #execute, #explain_operation, #generate_payload, #get_new_op_lock, #increment_dependencies, lock_options, #on_rabbitmq_confirm, #operation_payloads, #payload_for, #publish_payload_in_rabbitmq_async, #publish_payload_in_redis, #query_dependencies, rabbitmq_staging_set_key, #record_timestamp, recover_locks, recover_operation_from_lock, recover_payloads_for_rabbitmq, #recovering?, register_recovery_mechanism, #release_op_lock, run_recovery_mechanisms, #trace_operation, #write_dependencies
Constructor Details
Returns a new instance of PromiscuousCollectionOperation.
8
9
10
11
12
13
|
# File 'lib/promiscuous/publisher/operation/mongoid.rb', line 8
def initialize(options={})
super
@operation = :create
@collection = options[:collection]
@document = options[:document]
end
|
Class Method Details
.recover_operation(collection, instance_id, document) ⇒ Object
29
30
31
32
33
34
|
# File 'lib/promiscuous/publisher/operation/mongoid.rb', line 29
def self.recover_operation(collection, instance_id, document)
model = Promiscuous::Publisher::Model::Mongoid.collection_mapping[collection]
document = YAML.load(document)
instance = Mongoid::Factory.from_db(model, document)
new(:collection => model.collection, :document => document, :instance => instance)
end
|
Instance Method Details
#execute_instrumented(query) ⇒ Object
43
44
45
46
|
# File 'lib/promiscuous/publisher/operation/mongoid.rb', line 43
def execute_instrumented(query)
@instance = Mongoid::Factory.from_db(model, @document)
super
end
|
#model ⇒ Object
15
16
17
18
19
20
21
22
|
# File 'lib/promiscuous/publisher/operation/mongoid.rb', line 15
def model
@model ||= @document.try(:[], '_type').try(:constantize) ||
Promiscuous::Publisher::Model::Mongoid.collection_mapping[@collection.name]
@model = nil unless @model < Promiscuous::Publisher::Model::Mongoid
@model
rescue NameError
end
|
#recover_db_operation ⇒ Object
36
37
38
39
40
41
|
# File 'lib/promiscuous/publisher/operation/mongoid.rb', line 36
def recover_db_operation
without_promiscuous do
return if model.unscoped.where(:id => @instance.id).first @collection.insert(@document)
end
end
|
#recoverable_failure?(exception) ⇒ Boolean
52
53
54
|
# File 'lib/promiscuous/publisher/operation/mongoid.rb', line 52
def recoverable_failure?(exception)
exception.is_a?(Moped::Errors::ConnectionFailure)
end
|
#recovery_payload ⇒ Object
24
25
26
27
|
# File 'lib/promiscuous/publisher/operation/mongoid.rb', line 24
def recovery_payload
[@instance.class.promiscuous_collection_name, @instance.id, @document.to_yaml]
end
|
#should_instrument_query? ⇒ Boolean
48
49
50
|
# File 'lib/promiscuous/publisher/operation/mongoid.rb', line 48
def should_instrument_query?
super && model
end
|