lib/logidze.rb in logidze-1.0.0 vs lib/logidze.rb in logidze-1.1.0
- old
+ new
@@ -24,27 +24,36 @@
attr_accessor :associations_versioning
# Determines if Logidze should exclude log data from SELECT statements
attr_accessor :ignore_log_data_by_default
# Whether #at should return self or nil when log_data is nil
attr_accessor :return_self_if_log_data_is_empty
+ # Determines what Logidze should do when upgrade is needed (:raise | :warn | :ignore)
+ attr_reader :on_pending_upgrade
# Temporary disable DB triggers.
#
# @example
# Logidze.without_logging { Post.update_all(active: true) }
def without_logging
with_logidze_setting("logidze.disabled", "on") { yield }
end
- # Instructure Logidze to create a full snapshot for the new versions, not a diff
+ # Instruct Logidze to create a full snapshot for the new versions, not a diff
#
# @example
# Logidze.with_full_snapshot { post.touch }
def with_full_snapshot
with_logidze_setting("logidze.full_snapshot", "on") { yield }
end
+ def on_pending_upgrade=(mode)
+ if %i[raise warn ignore].exclude? mode
+ raise ArgumentError, "Unknown on_pending_upgrade option `#{mode.inspect}`. Expecting :raise, :warn or :ignore"
+ end
+ @on_pending_upgrade = mode
+ end
+
private
def with_logidze_setting(name, value)
ActiveRecord::Base.transaction do
ActiveRecord::Base.connection.execute "SET LOCAL #{name} TO #{value};"
@@ -57,6 +66,7 @@
self.append_on_undo = false
self.associations_versioning = false
self.ignore_log_data_by_default = false
self.return_self_if_log_data_is_empty = true
+ self.on_pending_upgrade = :ignore
end