Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove deprecated model methods #864

Merged
merged 2 commits into from
Sep 9, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ recommendations of [keepachangelog.com](http://keepachangelog.com/).

### Breaking Changes

- The model methods deprecated in 5.2.0 have been removed. Use paper_trail.x
instead of x.
- `timestamp_field=` removed without replacement. It is no longer configurable. The
timestamp field in the `versions` table must now be named `created_at`.

Expand Down
293 changes: 1 addition & 292 deletions lib/paper_trail/has_paper_trail.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,306 +69,15 @@ def has_paper_trail(options = {})
def paper_trail
::PaperTrail::ModelConfig.new(self)
end

# @api private
def paper_trail_deprecate(new_method, old_method = nil)
old = old_method.nil? ? new_method : old_method
msg = format("Use paper_trail.%s instead of %s", new_method, old)
::ActiveSupport::Deprecation.warn(msg, caller(2))
end

# @deprecated
def paper_trail_on_destroy(*args)
paper_trail_deprecate "on_destroy", "paper_trail_on_destroy"
paper_trail.on_destroy(*args)
end

# @deprecated
def paper_trail_on_update
paper_trail_deprecate "on_update", "paper_trail_on_update"
paper_trail.on_update
end

# @deprecated
def paper_trail_on_create
paper_trail_deprecate "on_create", "paper_trail_on_create"
paper_trail.on_create
end

# @deprecated
def paper_trail_off!
paper_trail_deprecate "disable", "paper_trail_off!"
paper_trail.disable
end

# @deprecated
def paper_trail_on!
paper_trail_deprecate "enable", "paper_trail_on!"
paper_trail.enable
end

# @deprecated
def paper_trail_enabled_for_model?
paper_trail_deprecate "enabled?", "paper_trail_enabled_for_model?"
paper_trail.enabled?
end

# @deprecated
def paper_trail_version_class
paper_trail_deprecate "version_class", "paper_trail_version_class"
paper_trail.version_class
end
end

# Wrap the following methods in a module so we can include them only in the
# ActiveRecord models that declare `has_paper_trail`.
module InstanceMethods
# @api public
def paper_trail
::PaperTrail::RecordTrail.new(self)
end

# @deprecated
def live?
self.class.paper_trail_deprecate "live?"
paper_trail.live?
end

# @deprecated
def paper_trail_originator
self.class.paper_trail_deprecate "originator", "paper_trail_originator"
paper_trail.originator
end

# @deprecated
def originator
self.class.paper_trail_deprecate "originator"
paper_trail.originator
end

# @deprecated
def clear_rolled_back_versions
self.class.paper_trail_deprecate "clear_rolled_back_versions"
paper_trail.clear_rolled_back_versions
end

# @deprecated
def source_version
self.class.paper_trail_deprecate "source_version"
paper_trail.source_version
end

# @deprecated
def version_at(*args)
self.class.paper_trail_deprecate "version_at"
paper_trail.version_at(*args)
end

# @deprecated
def versions_between(start_time, end_time, _reify_options = {})
self.class.paper_trail_deprecate "versions_between"
paper_trail.versions_between(start_time, end_time)
end

# @deprecated
def previous_version
self.class.paper_trail_deprecate "previous_version"
paper_trail.previous_version
end

# @deprecated
def next_version
self.class.paper_trail_deprecate "next_version"
paper_trail.next_version
end

# @deprecated
def paper_trail_enabled_for_model?
self.class.paper_trail_deprecate "enabled_for_model?", "paper_trail_enabled_for_model?"
paper_trail.enabled_for_model?
end

# @deprecated
def without_versioning(method = nil, &block)
self.class.paper_trail_deprecate "without_versioning"
paper_trail.without_versioning(method, &block)
end

# @deprecated
def appear_as_new_record(&block)
self.class.paper_trail_deprecate "appear_as_new_record"
paper_trail.appear_as_new_record(&block)
end

# @deprecated
def whodunnit(value, &block)
self.class.paper_trail_deprecate "whodunnit"
paper_trail.whodunnit(value, &block)
end

# @deprecated
def touch_with_version(name = nil)
self.class.paper_trail_deprecate "touch_with_version"
paper_trail.touch_with_version(name)
end

# `record_create` is deprecated in favor of `paper_trail.record_create`,
# but does not yet print a deprecation warning. When the `after_create`
# callback is registered (by ModelConfig#on_create) we still refer to this
# method by name, e.g.
#
# @model_class.after_create :record_create, if: :save_version?
#
# instead of using the preferred method `paper_trail.record_create`, e.g.
#
# @model_class.after_create { |r| r.paper_trail.record_create if r.save_version?}
#
# We still register the callback by name so that, if someone calls
# `has_paper_trail` twice, the callback will *not* be registered twice.
# Our own test suite calls `has_paper_trail` many times for the same
# class.
#
# In the future, perhaps we should require that users only set up
# PT once per class.
#
# @deprecated
def record_create
paper_trail.record_create
end

# See deprecation comment for `record_create`
# @deprecated
def record_update(force = nil)
paper_trail.record_update(force)
end

# @deprecated
def pt_record_object_changes?
self.class.paper_trail_deprecate "record_object_changes?", "pt_record_object_changes?"
paper_trail.record_object_changes?
end

# @deprecated
def pt_recordable_object
self.class.paper_trail_deprecate "recordable_object", "pt_recordable_object"
paper_trail.recordable_object
end

# @deprecated
def pt_recordable_object_changes
self.class.paper_trail_deprecate "recordable_object_changes", "pt_recordable_object_changes"
paper_trail.recordable_object_changes
end

# @deprecated
def changes_for_paper_trail
self.class.paper_trail_deprecate "changes", "changes_for_paper_trail"
paper_trail.changes
end

# See deprecation comment for `record_create`
# @deprecated
def clear_version_instance!
paper_trail.clear_version_instance
end

# See deprecation comment for `record_create`
# @deprecated
def reset_timestamp_attrs_for_update_if_needed!
paper_trail.reset_timestamp_attrs_for_update_if_needed
end

# See deprecation comment for `record_create`
# @deprecated
def record_destroy
paper_trail.record_destroy
end

# @deprecated
def save_associations(version)
self.class.paper_trail_deprecate "save_associations"
paper_trail.save_associations(version)
end

# @deprecated
def save_associations_belongs_to(version)
self.class.paper_trail_deprecate "save_associations_belongs_to"
paper_trail.save_associations_belongs_to(version)
end

# @deprecated
def save_associations_has_and_belongs_to_many(version)
self.class.paper_trail_deprecate(
"save_associations_habtm",
"save_associations_has_and_belongs_to_many"
)
paper_trail.save_associations_habtm(version)
end

# @deprecated
# @api private
def reset_transaction_id
::ActiveSupport::Deprecation.warn(
"reset_transaction_id is deprecated, use PaperTrail.clear_transaction_id"
)
PaperTrail.clear_transaction_id
end

# @deprecated
# @api private
def merge_metadata(data)
self.class.paper_trail_deprecate "merge_metadata"
paper_trail.merge_metadata(data)
end

# @deprecated
def attributes_before_change
self.class.paper_trail_deprecate "attributes_before_change"
paper_trail.attributes_before_change
end

# @deprecated
def object_attrs_for_paper_trail
self.class.paper_trail_deprecate "object_attrs_for_paper_trail"
paper_trail.object_attrs_for_paper_trail
end

# @deprecated
def changed_notably?
self.class.paper_trail_deprecate "changed_notably?"
paper_trail.changed_notably?
end

# @deprecated
def ignored_attr_has_changed?
self.class.paper_trail_deprecate "ignored_attr_has_changed?"
paper_trail.ignored_attr_has_changed?
end

# @deprecated
def notably_changed
self.class.paper_trail_deprecate "notably_changed"
paper_trail.notably_changed
end

# @deprecated
def changed_and_not_ignored
self.class.paper_trail_deprecate "changed_and_not_ignored"
paper_trail.changed_and_not_ignored
end

# The new method is named "enabled?" for consistency.
# @deprecated
def paper_trail_switched_on?
self.class.paper_trail_deprecate "enabled?", "paper_trail_switched_on?"
paper_trail.enabled?
end

# @deprecated
# @api private
def save_version?
self.class.paper_trail_deprecate "save_version?"
paper_trail.save_version?
end
end
end
end
22 changes: 16 additions & 6 deletions lib/paper_trail/model_config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ def enabled?

# Adds a callback that records a version after a "create" event.
def on_create
@model_class.after_create :record_create, if: ->(m) { m.paper_trail.save_version? }
@model_class.after_create { |r|
r.paper_trail.record_create if r.paper_trail.save_version?
}
return if @model_class.paper_trail_options[:on].include?(:create)
@model_class.paper_trail_options[:on] << :create
end
Expand All @@ -46,18 +48,26 @@ def on_destroy(recording_order = "before")
::ActiveSupport::Deprecation.warn(E_CANNOT_RECORD_AFTER_DESTROY)
end

@model_class.send "#{recording_order}_destroy", :record_destroy,
if: ->(m) { m.paper_trail.save_version? }
@model_class.send(
"#{recording_order}_destroy",
->(r) { r.paper_trail.record_destroy if r.paper_trail.save_version? }
)

return if @model_class.paper_trail_options[:on].include?(:destroy)
@model_class.paper_trail_options[:on] << :destroy
end

# Adds a callback that records a version after an "update" event.
def on_update
@model_class.before_save :reset_timestamp_attrs_for_update_if_needed!, on: :update
@model_class.after_update :record_update, if: ->(m) { m.paper_trail.save_version? }
@model_class.after_update :clear_version_instance!
@model_class.before_save(on: :update) { |r|
r.paper_trail.reset_timestamp_attrs_for_update_if_needed
}
@model_class.after_update { |r|
r.paper_trail.record_update(nil) if r.paper_trail.save_version?
}
@model_class.after_update { |r|
r.paper_trail.clear_version_instance
}
return if @model_class.paper_trail_options[:on].include?(:update)
@model_class.paper_trail_options[:on] << :update
end
Expand Down
2 changes: 1 addition & 1 deletion lib/paper_trail/record_trail.rb
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ def touch_with_version(name = nil)
attributes.each { |column|
@record.send(:write_attribute, column, current_time)
}
@record.record_update(true) unless will_record_after_update?
record_update(true) unless will_record_after_update?
@record.save!(validate: false)
end

Expand Down
17 changes: 0 additions & 17 deletions spec/models/fluxor_spec.rb

This file was deleted.

2 changes: 0 additions & 2 deletions spec/models/widget_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -238,8 +238,6 @@
end

describe "#whodunnit" do
it { is_expected.to respond_to(:whodunnit) }

context "no block given" do
it "should raise an error" do
expect {
Expand Down
Loading