Module: Saseo::Persistence::Persistor
Instance Attribute Summary collapse
Instance Method Summary collapse
- #build_version(message) ⇒ Object
- #persist_message!(message) ⇒ Object
- #process(message) ⇒ Object
- #save_version!(version) ⇒ Object
- #version_attributes ⇒ Object
Instance Attribute Details
#logger ⇒ Object
25 26 27 |
# File 'lib/saseo/persistence/persistor.rb', line 25 def logger @logger ||= Logger.new(STDOUT) end |
Instance Method Details
#build_version(message) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/saseo/persistence/persistor.rb', line 40 def build_version() Saseo::Models::Version.new.tap do |version| version_attributes.each do |attr| version.send("#{attr}=", .send(attr)) end # ActiveRecord 3 doesn't handle jsonb columns properly version.old_data = .old_data && Oj.dump(.old_data) version.new_data = .new_data && Oj.dump(.new_data) end end |
#persist_message!(message) ⇒ Object
36 37 38 |
# File 'lib/saseo/persistence/persistor.rb', line 36 def () save_version!(build_version()) end |
#process(message) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/saseo/persistence/persistor.rb', line 29 def process() logger.debug { "received source version for persistence: #{message.id}" } = Saseo::Persistence::MessageFilter.() () if end |
#save_version!(version) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/saseo/persistence/persistor.rb', line 53 def save_version!(version) if version.has_changes? begin version.save! logger.debug { "saved version: #{version.id}" } rescue ActiveRecord::RecordNotUnique => e logger.warn "Duplicate version: #{version.attributes}" rescue ActiveRecord::StatementInvalid => e if e..match /PG::ConnectionBad/ logger.warn { 'Lost connection to DB, attempting to reconnect.' } Saseo::Models::Version.reconnect! retry end end else logger.info { "Skipped version with no changes: #{version.attributes}" } end end |
#version_attributes ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/saseo/persistence/persistor.rb', line 12 def version_attributes i[ id transaction_id table_name item_id item_uuid action whodunnit ] end |