fast_versioning 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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