Commit 6017e271 authored by Eric Davis's avatar Eric Davis

Add rescues to the aaj migrations for unsaved records.

If the Journal or the Journaled object don't save successfully,
put out the reasons why instead of aborting the migrations. Journaled
objects might failure from the :touch update, which are safe to ignore.
parent 32f92a50
...@@ -14,7 +14,12 @@ class UpdateJournalsForActsAsJournalized < ActiveRecord::Migration ...@@ -14,7 +14,12 @@ class UpdateJournalsForActsAsJournalized < ActiveRecord::Migration
j.type = klass_name j.type = klass_name
j.version = idx + 2 # initial journal should be 1 j.version = idx + 2 # initial journal should be 1
j.activity_type = j.journalized_type.constantize.activity_provider_options.keys.first j.activity_type = j.journalized_type.constantize.activity_provider_options.keys.first
j.save(false) begin
j.save(false)
rescue ActiveRecord::RecordInvalid => ex
puts "Error saving: #{j.class.to_s}##{j.id} - #{ex.message}"
end
end end
end end
end end
......
...@@ -45,7 +45,11 @@ class BuildInitialJournalsForActsAsJournalized < ActiveRecord::Migration ...@@ -45,7 +45,11 @@ class BuildInitialJournalsForActsAsJournalized < ActiveRecord::Migration
elsif o.respond_to?(:user) elsif o.respond_to?(:user)
new_journal.user = o.user new_journal.user = o.user
end end
if new_journal.save # Using rescue and save! here because either the Journal or the
# touched record could fail. This will catch either error and continue
begin
new_journal.save!
new_journal.reload new_journal.reload
# Backdate journal # Backdate journal
...@@ -54,12 +58,12 @@ class BuildInitialJournalsForActsAsJournalized < ActiveRecord::Migration ...@@ -54,12 +58,12 @@ class BuildInitialJournalsForActsAsJournalized < ActiveRecord::Migration
elsif o.respond_to?(:created_on) elsif o.respond_to?(:created_on)
new_journal.update_attribute(:created_at, o.created_on) new_journal.update_attribute(:created_at, o.created_on)
end end
else rescue ActiveRecord::RecordInvalid => ex
if new_journal.errors.count == 1 && new_journal.errors.first[0] == "version" if new_journal.errors.count == 1 && new_journal.errors.first[0] == "version"
# Skip, only error was from creating the initial journal for a record that already had one. # Skip, only error was from creating the initial journal for a record that already had one.
else else
puts "ERROR: errors creating the initial journal for #{o.class.to_s}##{o.id.to_s}:" puts "ERROR: errors creating the initial journal for #{o.class.to_s}##{o.id.to_s}:"
puts " #{new_journal.errors.full_messages.inspect}" puts " #{ex.message}"
end end
end end
end end
......
...@@ -16,7 +16,12 @@ class AddChangesFromJournalDetailsForActsAsJournalized < ActiveRecord::Migration ...@@ -16,7 +16,12 @@ class AddChangesFromJournalDetailsForActsAsJournalized < ActiveRecord::Migration
elsif detail.property == 'attachment' # Attachment elsif detail.property == 'attachment' # Attachment
changes["attachments_" + detail.prop_key.to_s] = [detail.old_value, detail.value] changes["attachments_" + detail.prop_key.to_s] = [detail.old_value, detail.value]
end end
journal.update_attribute(:changes, changes.to_yaml) begin
journal.update_attribute(:changes, changes.to_yaml)
rescue ActiveRecord::RecordInvalid => ex
puts "Error saving: #{journal.class.to_s}##{journal.id} - #{ex.message}"
end
end end
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment