Skip to content

Latest commit

 

History

History
224 lines (196 loc) · 18.9 KB

CHANGELOG.md

File metadata and controls

224 lines (196 loc) · 18.9 KB

4.0.0 (Unreleased)

Breaking change: if you use a custom initializer for PaperTrail in conjunction with Rails, you will need to add this line of code to the beginning of it:
PaperTrail::Rails::Engine.eager_load!

Also

If you depend on the RSpec or Cucumber helpers, you will need to manually load them into your test helper.

  • #525 / #512 - Support for virtual accessors and redefined setter and getter methods.
  • #507 - Support for opting out of saving changesets on models by choice when the object_changes column exists on the default versions table.
  • #500 - Support for passing on: [] as an argument, with only manual versioning via calls to touch_with_version
  • #494 - The install generator will warn the user if the migration they are attempting to generate already exists.
  • #484 - Support for PostgreSQL's JSONB Type for storing object and object_changes.
  • #458 - For create events, metadata pointing at attributes should attempt to grab the current value instead of looking at the value prior to the change (which would always be nil)
  • #440 - versions association should clear/reload after a transaction rollback.
  • #439 / #12 - Support for versioning of associations (Has Many, Has One, HABTM, etc.)
  • #438 - ModelKlass.paper_trail_enabled_for_model? should return false if has_paper_trail has not been declared on the class.
  • #404 / #428 - model_instance.dup does not need to be invoked when examining what the instance looked like before changes were persisted, which avoids issues if a 3rd party has overriden the dup behavior. Also fixes errors occuring when a user attempts to update the inheritance column on an STI model instance in ActiveRecord 4.1.x
  • #427 - Fix reify method in context of model where a column has been removed.
  • #420 - Add VersionConcern#where_object_changes instance method; acts as a helper for querying against the object_changes column in versions table.
  • #416 - Added a config option for enabling/disabling utilization of serialized_attributes for ActiveRecord, necessary because serialized_attributes has been deprecated in ActiveRecord version 4.2 and will be removed in version 5.0
  • #414 - Fix functionality ignore argument to has_paper_trail in ActiveRecord 4.
  • #413 - Utilize RequestStore to ensure that the PaperTrail.whodunnit is set in a thread safe manner within Rails & Sinatra.
  • #399 - Add :dup argument for options hash to reify which forces a new model instance.
  • #394 - Add RSpec matcher have_a_version_with for easier testing.
  • #391 - object_changes value should dump to YAML as a normal Hash instead of an ActiveSupport::HashWithIndifferentAccess.
  • #381 - Rspec and Cucumber helpers should not be loaded by default, regardless of whether those libraries are loaded.
  • #375 / #374 / #354 / #131 - Versions should be built with after_ callbacks so the timestamp field for a version can be forced to match the corresponding timestamp in the database for the state persistence of a change to the base (versioned) model.
  • #347 - Autoload ActiveRecord models in via a Rails::Engine when the gem is used with Rails.
  • Methods handling serialized attributes should fallback to the currently set Serializer instead of always falling back to PaperTrail::Serializers::YAML.
  • Both PaperTrail.config and PaperTrail.configure are now identical, and will both return the PaperTrail::Config instance and also yield it if a block is provided.

3.0.8

  • #525 / #512 - Support for virtual accessors and redefined setter and getter methods.

3.0.7

  • #404 / #428 - Fix errors occuring when a user attempts to update the inheritance column on an STI model instance in ActiveRecord 4.1.x

3.0.6

  • #414 - Backport fix for ignore argument to has_paper_trail in ActiveRecord 4.

3.0.5

  • #401 / #406 - PaperTrail::Version class is not loaded via a Rails::Engine, even when the gem is used with in Rails. This feature has will be re-introduced in version 4.0.
  • #398 - Only require the RSpec helper if RSpec::Core is required.

3.0.3

This version was yanked from RubyGems and has been replaced by version 3.0.5, which is almost identical, but does not eager load in the PaperTrail::Version class through a Rails::Engine when the gem is used on Rails since it was causing issues for some users.

  • #386 - Fix eager loading of versions association with custom class name in ActiveRecord 4.1.
  • #384 - Fix VersionConcern#originator instance method.
  • #383 - Make gem compatible with ActiveRecord::Enum (available in ActiveRecord 4.1+).
  • #380 / #377 - Add VersionConcern#where_object instance method; acts as a helper for querying against the object column in versions table.
  • #373 - Fix default sort order for the versions association in ActiveRecord 4.1.
  • #372 - Use Arel for SQL construction.
  • #365 - VersionConcern#version_at should return nil when receiving a timestamp that occured after the object was destroyed.
  • Expand PaperTrail::VERSION into a module, mimicking the form used by Rails to give it some additional modularity & versatility.
  • Fixed VersionConcern#index instance method so that it conforms to using the primary key for ordering when possible.

3.0.2

  • #357 - If a Version instance is reified and then persisted at that state, it's timestamp attributes for update should still get touched.
  • #351 / #352 - PaperTrail::Rails::Controller should hook into all controller types, and should not get loaded unless ActionController is.
  • #346 - user_for_paper_trail method should accommodate different types for return values from current_user method.
  • #344 - Gem is now tested against MySQL and PostgreSQL in addition to SQLite.
  • #317 / #314 - versions should default to ordering via the primary key if it is an integer to avoid timestamp comparison issues.
  • PaperTrail::Cleaner.clean_versions! should group versions by PaperTrail.timestamp_field when deciding which ones to keep / destroy, instead of always grouping by the created_at field.
  • If a Version instance is reified and then persisted at that state, it's source version (model_instance#version_association_name, usually model_instance#version) will get cleared since persisting it causes it to become the live instance.
  • If destroy actions are tracked for a versioned model, invoking destroy on the model will cause the corresponding version that gets generated to be assigned as the source version (model_instance#version_association_name, usually model_instance#version).

3.0.1

  • #340 - Prevent potential error encountered when using the InstallGenerator with Rails 4.1.0.rc1.
  • #334 - Add small-scope whodunnit method to PaperTrail::Model::InstanceMethods.
  • #329 - Add touch_with_version method to PaperTrail::Model::InstanceMethods, to allow for generating a version while touching a model.
  • #328 / #326 / #307 - Model.paper_trail_enabled_for_model? and model_instance.without_versioning is now thread-safe.
  • #316 - user_for_paper_trail should default to current_user.try(:id) instead of current_user (if current_user is defined).
  • #313 - Make the Rails::Controller helper compatible with ActionController::API for compatibility with the rails-api gem.
  • #312 - Fix RSpec with_versioning class level helper method.
  • model_instance.without_versioning now yields the model_instance, enabling syntax like this: model_instance.without_versioning { |obj| obj.update_attributes(:name => 'value') }.
  • Deprecated Model.paper_trail_on and Model.paper_trail_off in favor of bang versions of the methods. Deprecation warning informs users that the non-bang versions of the methods will be removed in version 4.0

3.0.0

  • #305 - PaperTrail::VERSION should be loaded at runtime.
  • #295 - Explicitly specify table name for version class when querying attributes. Prevents AmbiguousColumn errors on certain JOIN statements.
  • #289 - Use ActiveSupport::Concern for implementation of base functionality on PaperTrail::Version class. Increases flexibility and makes it easier to use custom version classes with multiple ActiveRecord connections.
  • #288 - Change all scope declarations to class methods on the PaperTrail::Version class. Fixes usability when PaperTrail::Version.abstract_class? == true.
  • #287 - Support for PostgreSQL's JSON Type for storing object and object_changes.
  • #281 - Rails::Controller helper will return false for the paper_trail_enabled_for_controller method if PaperTrail.enabled? == false.
  • #280 - Don't track virtual timestamp attributes.
  • #278 / #272 - Make RSpec and Cucumber helpers usable with Spork and Zeus.
  • #273 - Make the only and ignore options accept Hash arguments; allows for conditional tracking.
  • #264 - Allow unwrapped symbol to be passed in to the on option.
  • #224/#236 - Fixed compatibility with ActsAsTaggableOn.
  • #235 - Dropped unnecessary secondary sort on versions association.
  • #216 - Added helper & extension for RSpec, and helper for Cucumber.
  • #212 - Added PaperTrail::Cleaner module, useful for discarding draft versions.
  • #207 - Versions for 'create' events are now created with create! instead of create so that an exception gets raised if it is appropriate to do so.
  • #199 - Rails 4 compatibility.
  • #165 - Namespaced the Version class under the PaperTrail module.
  • #119 - Support for Sinatra; decoupled gem from Rails.
  • Renamed the default serializers from PaperTrail::Serializers::Yaml and PaperTrail::Serializers::Json to the capitalized forms, PaperTrail::Serializers::YAML and PaperTrail::Serializers::JSON.
  • Removed deprecated set_whodunnit method from Rails Controller scope.

2.7.2

  • #228 - Refactored default user_for_paper_trail method implementation so that current_user only gets invoked if it is defined.
  • #219 - Fixed issue where attributes stored with nil value might not get reified properly depending on the way the serializer worked.
  • #213 - Added a version_limit option to the PaperTrail::Config options that can be used to restrict the number of versions PaperTrail will store per object instance.
  • #187 - Confirmed JRuby support.
  • #174 - The event field on the versions table can now be customized.

2.7.1

  • #206 - Fixed Ruby 1.8.7 compatibility for tracking object_changes.
  • #200 - Fixed next_version method so that it returns the live model when called on latest reified version of a model prior to the live model.
  • #197 - PaperTrail now falls back on using YAML for serialization of serialized model attributes for storage in the object and object_changes columns in the Version table. This fixes compatibility for Rails 3.0.x for projects that employ the serialize declaration on a model.
  • #194 - A JSON serializer is now included in the gem.
  • #192 - object_changes should store serialized representation of serialized attributes for create actions (in addition to update actions, which had already been patched by #180).
  • #190 - Fixed compatibility with SerializedAttributes gem.
  • #189 - Provided support for a configure block initializer.
  • Added setter method for the serializer config option.

2.7.0

  • #183 - Fully qualify the Version class to help prevent namespace resolution errors within other gems / plugins.
  • #180 - Store serialized representation of serialized attributes on the object and object_changes columns in the Version table.
  • #164 - Allow usage of custom serializer for storage of object attributes.

2.6.4

  • #181/#182 - Controller metadata methods should only be evaluated when paper_trail_enabled_for_controller == true.
  • #177/#178 - Factored out version_key into it's own method to prevent ConnectionNotEstablished error from getting thrown in instances where has_paper_trail is declared on class prior to ActiveRecord establishing a connection.
  • #176 - Force metadata calls for attributes to use current value if attribute value is changing.
  • #173 - Update link to diff-lcs.
  • #172 - Save object_changes on creation.
  • #168 - Respect conditional :if or :unless arguments to the has_paper_trail method for destroy events.
  • #167 - Fix originator method so that it works with subclasses and STI.
  • #160 - Fixed failing tests and resolved out of date dependency issues.
  • #157 - Refactored class_attribute names on the ClassMethods module for names that are not obviously pertaining to PaperTrail to prevent method name collision.