Additional real/virtual attribute change tracking independent of ActiveRecords
Install
gem install delta_changes
Usage
class User < ActiveRecord::Base
include DeltaChanges::Extension
delta_changes columns: [:name], attributes: [:full_name]
end
user.name = "bar"
user.delta_changes # => {"name" => [nil, "bar"]}
user.full_name_will_change!
user.delta_changes # => {"name" => [nil, "bar"], "full_name" => [nil, "Mr. Bar"]}
user.save!
user.delta_changes # => {"name" => [nil, "bar"], "full_name" => [nil, "Mr. Bar"]}
user.reset_delta_changes!
user.delta_changes # => {}
Testing
To run tests: $ rake spec
To run tests with a specific Rails version listed in ./gemfiles
, e.g. Rails 7.0:
$ BUNDLE_GEMFILE=gemfiles/rails7.0.gemfile rake spec
Releasing a new version
A new version is published to RubyGems.org every time a change to version.rb
is pushed to the main
branch.
In short, follow these steps:
- Update
version.rb
, - update version in all
Gemfile.lock
files, - merge this change into
main
, and - look at the action for output.
To create a pre-release from a non-main branch:
- change the version in
version.rb
to something like1.2.0.pre.1
or2.0.0.beta.2
, - push this change to your branch,
- go to Actions → “Publish to RubyGems.org” on GitHub,
- click the “Run workflow” button,
- pick your branch from a dropdown.
Author
Michael Grosser
michael@grosser.it
License: MIT