fast_versioning 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6bb8ed66caeccf8831f4f7758d39701592388310
4
- data.tar.gz: 7fb141bbd2c2f43255cd83cc38e5488037c9e1d1
2
+ SHA256:
3
+ metadata.gz: 87613fb753cc329fe499c239bc0a84ce505879abb87c4c74cff07c657b0b86db
4
+ data.tar.gz: 7dec724f5f187384c874ff7af8bd4751054d5462e0e2233d94dfc03075f5e3f7
5
5
  SHA512:
6
- metadata.gz: 33e1c46ca59a82034ae997da35a4728df1cd0845530f9c38e808fd72350cb7252eb171568190da53f9c78ea82f23b546c9d73605fe9ad18036b46c3500c031e8
7
- data.tar.gz: 0653f9df4613c74619feb1a0d7d7fec7cec2bdccb66ec912509e690e226045afa6192d7a80d73e435800371f89c9fb24bcfdb5c2a5565e5ae75e9b40cc267037
6
+ metadata.gz: 9b635ba136aed6ec8b8ef573a4e8d958826ff5d481a83fc75f1dddee18d706b6b8909a3b323d1e3db18bf6042f7e4cda7c03ad770848a22147ee19a7e982f8b1
7
+ data.tar.gz: 8a2ca6a9207836d1f54feaa6ffddfd86a3583493b00aad0897eb3a25f321e47752892f84b68e7298e96247d944b6c389f1c4742ce04fe4ef2b530b511f143f88
data/README.md CHANGED
@@ -20,6 +20,17 @@ gem 'fast_versioning'
20
20
  rake fast_versioning:install:migrations
21
21
  ```
22
22
 
23
+ Prerequisites
24
+ -------------
25
+ - PaperTrail needs to be added to your model
26
+ - Storing changes needs to be enabled for PaperTrail
27
+ - Attributes tracked with FastVersioning need to also be present in PaperTrail
28
+ ie.
29
+ ```ruby
30
+ has_paper_trail only: :status
31
+ has_fast_versions :status
32
+ ```
33
+
23
34
  Configuration
24
35
  -------------
25
36
  1. Include the concern in your model
@@ -46,8 +57,21 @@ has_fast_versions(
46
57
 
47
58
  Usage
48
59
  -----
60
+ ### Creating and recreating fast versions
61
+ FastVersioning versions are created based on the `PaperTrail::Version` instance. When available, the `changeset` is used, otherwise, FastVersioning will attempt to `reify` the object comparing the changes for the tracked columns.
62
+
63
+ At any point you can retroactively recreate FastVersioning versions (especially, initially, when adding fast versions to existing PaperTrail configuration, or when adding/changing FastVersioning options for a model), to do so you need to call the `recreate_fast_versions!` on the `PaperTrail::Version` instance. It will destroy all previous fast versions if they exist and recreate them.
64
+
65
+ Example usage:
66
+ ```ruby
67
+ # recreate fast versions for a single model instance
68
+ your_model.versions.find_each(&:recreate_fast_versions!)
69
+
70
+ # recreate fast versions for all model instances
71
+ YourModel.find_each { |your_model| your_model.versions.find_each(&:recreate_fast_versions!) }
72
+ ```
49
73
 
50
- ### samples
74
+ ### Querying
51
75
  ```ruby
52
76
  your_model.fast_versions # get all fast versions
53
77
  your_model.fast_versions_for(:plan_type) # get fast versions for given property - chain
data/Rakefile CHANGED
@@ -4,6 +4,8 @@ rescue LoadError
4
4
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
5
  end
6
6
 
7
+ require 'bundler/gem_tasks'
8
+
7
9
  require 'rdoc/task'
8
10
 
9
11
  RDoc::Task.new(:rdoc) do |rdoc|
@@ -13,25 +15,3 @@ RDoc::Task.new(:rdoc) do |rdoc|
13
15
  rdoc.rdoc_files.include('README.md')
14
16
  rdoc.rdoc_files.include('lib/**/*.rb')
15
17
  end
16
-
17
- APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
18
- load 'rails/tasks/engine.rake'
19
-
20
-
21
- load 'rails/tasks/statistics.rake'
22
-
23
-
24
-
25
- require 'bundler/gem_tasks'
26
-
27
- require 'rake/testtask'
28
-
29
- Rake::TestTask.new(:test) do |t|
30
- t.libs << 'lib'
31
- t.libs << 'test'
32
- t.pattern = 'test/**/*_test.rb'
33
- t.verbose = false
34
- end
35
-
36
-
37
- task default: :test
@@ -1,4 +1,4 @@
1
- class CreateFastVersioningFastVersions < ActiveRecord::Migration
1
+ class CreateFastVersioningFastVersions < ActiveRecord::Migration[5.0]
2
2
  def change
3
3
  create_table :fast_versioning_fast_versions do |t|
4
4
  t.references :item, polymorphic: true, index: { name: 'fast_version_item_index' }
@@ -12,19 +12,24 @@ module FastVersioning
12
12
  value_change = FastVersioning::ValueChange.new(version: self)
13
13
 
14
14
  item.send(:fast_version_for).each do |tracked_attribute|
15
- if value_change.value_was(tracked_attribute.name) != value_change.value_became(tracked_attribute.name)
16
- fast_versions.create(
17
- item_id: item_id,
18
- item_type: item_type,
19
- whodunnit_id: whodunnit.to_i,
20
- whodunnit_type: whodunnit_type,
21
- name: tracked_attribute.name,
22
- value: value_change.value_became(tracked_attribute.name),
23
- prev_value: value_change.value_was(tracked_attribute.name),
24
- meta: tracked_attribute.meta,
25
- created_at: created_at
26
- )
27
- end
15
+ name = tracked_attribute.name
16
+ new_value = value_change.value_became(name)
17
+ prev_value = value_change.value_was(name)
18
+
19
+ # Skip if value unchanged.
20
+ next if prev_value == new_value
21
+
22
+ fast_versions.create(
23
+ item_id: item_id,
24
+ item_type: item_type,
25
+ whodunnit_id: whodunnit&.to_i,
26
+ whodunnit_type: whodunnit_type,
27
+ name: name,
28
+ value: new_value,
29
+ prev_value: prev_value,
30
+ meta: tracked_attribute.meta,
31
+ created_at: created_at
32
+ )
28
33
  end
29
34
  end
30
35
  true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_versioning
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arcadia Power
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-09-23 00:00:00.000000000 Z
13
+ date: 2019-01-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -18,28 +18,40 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: '5.0'
22
+ - - "<"
23
+ - !ruby/object:Gem::Version
24
+ version: '5.2'
22
25
  type: :runtime
23
26
  prerelease: false
24
27
  version_requirements: !ruby/object:Gem::Requirement
25
28
  requirements:
26
29
  - - ">="
27
30
  - !ruby/object:Gem::Version
28
- version: '0'
31
+ version: '5.0'
32
+ - - "<"
33
+ - !ruby/object:Gem::Version
34
+ version: '5.2'
29
35
  - !ruby/object:Gem::Dependency
30
36
  name: paper_trail
31
37
  requirement: !ruby/object:Gem::Requirement
32
38
  requirements:
33
- - - "~>"
39
+ - - ">="
34
40
  - !ruby/object:Gem::Version
35
41
  version: '4.2'
42
+ - - "<"
43
+ - !ruby/object:Gem::Version
44
+ version: '6'
36
45
  type: :runtime
37
46
  prerelease: false
38
47
  version_requirements: !ruby/object:Gem::Requirement
39
48
  requirements:
40
- - - "~>"
49
+ - - ">="
41
50
  - !ruby/object:Gem::Version
42
51
  version: '4.2'
52
+ - - "<"
53
+ - !ruby/object:Gem::Version
54
+ version: '6'
43
55
  - !ruby/object:Gem::Dependency
44
56
  name: sqlite3
45
57
  requirement: !ruby/object:Gem::Requirement
@@ -105,8 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
117
  - !ruby/object:Gem::Version
106
118
  version: '0'
107
119
  requirements: []
108
- rubyforge_project:
109
- rubygems_version: 2.5.1
120
+ rubygems_version: 3.0.2
110
121
  signing_key:
111
122
  specification_version: 4
112
123
  summary: Fast versioning extension for paper_trail