paper_trail 5.2.3 → 6.0.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
2
  SHA1:
3
- metadata.gz: 096e05463c63093078629b25f9be4449a57d3fa7
4
- data.tar.gz: 56ab2c64e8a17af51d4acb67076740f4dd07d17e
3
+ metadata.gz: 70bf4fda92d269f953d7e88fc0a78f72ff3e288e
4
+ data.tar.gz: 52bf0491880b3dba4905af331f84bc9de67d0bef
5
5
  SHA512:
6
- metadata.gz: 6e10ad3f94b5604ba97f8d49b9f5191ace437d5bd777fa78aa0f2459c82acd852aa62ddb73bd589f90b8d28f4cdd702cdc89438bb0dd63fa020edb265bf4a3db
7
- data.tar.gz: 09ccd0195883ddba04a640c4a235ac4ca5ea94e006d39549d974f4181cc55c5f6856525fdcf39c32089fcfcb4cffb088b3b8894b2077ce07a46ab02a0faa2405
6
+ metadata.gz: 7b139581b4bf0efa29562edc58d30e3854d746d6064c1e4d0a36204ffb1ed34c81d909eea0e6866fa42b35c34f8a3b0fef5e77858f00579bdeca50441d3c13d7
7
+ data.tar.gz: 1608f17448169a8f2084ce44782cfcac844bd6cf4faba4f283c81b5c338dbed9afc68f5b985279e35019cdb5f40f90a2835a2f9b4ed50ff1e998dc5d78471ea2
@@ -22,17 +22,11 @@ Install gems with `bundle exec appraisal install`.
22
22
 
23
23
  Testing is a little awkward because the test suite:
24
24
 
25
- 1. Supports three major versions of rails: 3, 4, 5
25
+ 1. Supports multiple versions of rails
26
26
  1. Contains a "dummy" rails app with three databases (test, foo, and bar)
27
27
  1. Supports three different RDBMS': sqlite, mysql, and postgres
28
28
 
29
- Test against rails 3:
30
-
31
- ```
32
- bundle exec appraisal ar3 rake
33
- ```
34
-
35
- Run tests with sqlite:
29
+ ### Run tests with sqlite
36
30
 
37
31
  ```
38
32
  # Create the appropriate database config. file
@@ -47,10 +41,10 @@ RAILS_ENV=bar bundle exec rake db:setup
47
41
  cd ../..
48
42
 
49
43
  # Run tests
50
- DB=sqlite bundle exec rake
44
+ DB=sqlite bundle exec appraisal ar-5.0 rake
51
45
  ```
52
46
 
53
- Run tests with mysql:
47
+ ### Run tests with mysql
54
48
 
55
49
  ```
56
50
  # Create the appropriate database config. file
@@ -65,10 +59,10 @@ RAILS_ENV=bar bundle exec rake db:setup
65
59
  cd ../..
66
60
 
67
61
  # Run tests
68
- DB=mysql bundle exec rake
62
+ DB=mysql bundle exec appraisal ar-5.0 rake
69
63
  ```
70
64
 
71
- Run tests with postgres:
65
+ ### Run tests with postgres
72
66
 
73
67
  ```
74
68
  # Create the appropriate database config. file
@@ -78,19 +72,17 @@ DB=postgres bundle exec rake prepare
78
72
  # If this is the first test run ever, create databases.
79
73
  # Unlike mysql, use create/migrate instead of setup.
80
74
  cd test/dummy
81
- DB=postgres RAILS_ENV=test bundle exec rake db:create
82
- DB=postgres RAILS_ENV=test bundle exec rake db:migrate
83
- DB=postgres RAILS_ENV=foo bundle exec rake db:create
84
- DB=postgres RAILS_ENV=foo bundle exec rake db:migrate
85
- DB=postgres RAILS_ENV=bar bundle exec rake db:create
86
- DB=postgres RAILS_ENV=bar bundle exec rake db:migrate
75
+ DB=postgres RAILS_ENV=test bundle exec rake db:drop db:create db:migrate
76
+ DB=postgres RAILS_ENV=foo bundle exec rake db:drop db:create db:migrate
77
+ DB=postgres RAILS_ENV=bar bundle exec rake db:drop db:create db:migrate
87
78
  cd ../..
88
79
 
89
80
  # Run tests
90
81
  DB=postgres bundle exec rake
82
+ DB=postgres bundle exec appraisal ar-5.0 rake
91
83
  ```
92
84
 
93
- ### Releases
85
+ ## Releases
94
86
 
95
87
  1. Set the version in lib/paper_trail/version_number.rb
96
88
  - Set PRE to nil unless it's a pre-release (beta, rc, etc.)
@@ -102,7 +94,7 @@ DB=postgres bundle exec rake
102
94
  - Update version number(s) in the documentation links table
103
95
  1. Commit
104
96
  1. git tag -a -m "v5.0.0" "v5.0.0" # or whatever number
105
- 1. git push --tags origin master
97
+ 1. git push --tags origin 5-stable # or whatever branch
106
98
  1. gem build paper_trail.gemspec
107
99
  1. gem push paper_trail-5.0.0.gem
108
100
 
data/.rubocop.yml CHANGED
@@ -20,6 +20,10 @@ Metrics/AbcSize:
20
20
  Exclude:
21
21
  - 'test/dummy/db/migrate/*'
22
22
 
23
+ # Not a useful metric compared to, e.g. `AbcSize`.
24
+ Metrics/ClassLength:
25
+ Enabled: false
26
+
23
27
  # The Ruby Style Guide recommends to "Limit lines to 80 characters."
24
28
  # (https://github.com/bbatsov/ruby-style-guide#80-character-limits)
25
29
  # but 100 is also reasonable.
@@ -32,6 +36,10 @@ Metrics/LineLength:
32
36
  Metrics/MethodLength:
33
37
  Enabled: false
34
38
 
39
+ # Not a useful metric compared to, e.g. `AbcSize`.
40
+ Metrics/ModuleLength:
41
+ Enabled: false
42
+
35
43
  Style/AlignParameters:
36
44
  EnforcedStyle: with_fixed_indentation
37
45
 
data/.rubocop_todo.yml CHANGED
@@ -4,17 +4,9 @@
4
4
  Metrics/AbcSize:
5
5
  Max: 30 # Goal: 15
6
6
 
7
- Metrics/ClassLength:
8
- Max: 327
9
- Exclude:
10
- - test/**/*
11
-
12
7
  Metrics/CyclomaticComplexity:
13
8
  Max: 8 # Goal: 6
14
9
 
15
- Metrics/ModuleLength:
16
- Max: 317
17
-
18
10
  Metrics/PerceivedComplexity:
19
11
  Max: 10 # Goal: 7
20
12
 
data/.travis.yml CHANGED
@@ -25,17 +25,19 @@ before_script:
25
25
  - sh -c "if [ \"$DB\" = 'postgres' ]; then psql -c 'create database paper_trail_foo;' -U postgres; fi"
26
26
 
27
27
  gemfile:
28
- - gemfiles/ar3.gemfile
29
- - gemfiles/ar4.gemfile
30
- - gemfiles/ar5.gemfile
28
+ - gemfiles/ar_4.2.gemfile
29
+ - gemfiles/ar_5.0.gemfile
30
+ - gemfiles/ar_master.gemfile
31
31
 
32
32
  matrix:
33
33
  fast_finish: true
34
34
  exclude:
35
- - gemfile: gemfiles/ar5.gemfile
35
+ - gemfile: gemfiles/ar_5.0.gemfile
36
36
  rvm: 1.9.3
37
- - gemfile: gemfiles/ar5.gemfile
37
+ - gemfile: gemfiles/ar_5.0.gemfile
38
38
  rvm: jruby-19mode
39
+ allow_failures:
40
+ - gemfile: gemfiles/ar_master.gemfile
39
41
 
40
42
  addons:
41
43
  postgresql: "9.4"
data/Appraisals CHANGED
@@ -7,27 +7,12 @@
7
7
  # > the version from the appraisal takes precedence.
8
8
  # > https://github.com/thoughtbot/appraisal
9
9
 
10
- appraise "ar3" do
11
- gem "activerecord", "~> 3.2.22"
12
- gem "i18n", "~> 0.6.11"
13
- gem "request_store", "~> 1.1.0"
14
- gem "sinatra", "~> 1.4.6"
15
-
16
- group :development, :test do
17
- gem 'railties', '~> 3.2.22'
18
- gem 'test-unit', '~> 3.1.5'
19
- platforms :ruby do
20
- gem 'mysql2', '~> 0.3.20'
21
- end
22
- end
23
- end
24
-
25
- appraise "ar4" do
10
+ appraise "ar-4.2" do
26
11
  gem "activerecord", "~> 4.2"
27
12
  gem "sinatra", "~> 1.4.6"
28
13
  end
29
14
 
30
- appraise "ar5" do
15
+ appraise "ar-5.0" do
31
16
  gem "activerecord", "~> 5.0.0"
32
17
  gem "rspec-rails", "~> 3.5.1"
33
18
  gem 'rails-controller-testing'
@@ -36,3 +21,9 @@ appraise "ar5" do
36
21
  # Contributions welcome.
37
22
  # gem "sinatra", "2.0.0.beta2"
38
23
  end
24
+
25
+ appraise "ar_master" do
26
+ gem "rails", github: "rails/rails"
27
+ gem "rspec-rails", "~> 3.5.1"
28
+ gem "rails-controller-testing"
29
+ end
data/CHANGELOG.md CHANGED
@@ -3,6 +3,51 @@
3
3
  This project follows [semver 2.0.0](http://semver.org/spec/v2.0.0.html) and the
4
4
  recommendations of [keepachangelog.com](http://keepachangelog.com/).
5
5
 
6
+ ## Unreleased
7
+
8
+ ### Breaking Changes
9
+
10
+ - None
11
+
12
+ ### Added
13
+
14
+ - None
15
+
16
+ ### Fixed
17
+
18
+ - None
19
+
20
+ ## 6.0.0 (2016-12-03)
21
+
22
+ Now with rails 5.1 support, and less model pollution! About 40 methods that were
23
+ polluting your models' namespaces have been removed, reducing the chances of a
24
+ name conflict with your methods.
25
+
26
+ ### Breaking Changes
27
+
28
+ - [#898](https://github.com/airblade/paper_trail/pull/898) - Dropped support
29
+ for rails 3
30
+ - [#864](https://github.com/airblade/paper_trail/pull/864) - The model methods
31
+ deprecated in 5.2.0 have been removed. Use `paper_trail.x` instead of `x`.
32
+ - [#861](https://github.com/airblade/paper_trail/pull/861) - `timestamp_field=`
33
+ removed without replacement. It is no longer configurable. The
34
+ timestamp field in the `versions` table must now be named `created_at`.
35
+
36
+ ### Deprecated
37
+
38
+ - None
39
+
40
+ ### Added
41
+
42
+ - [#900](https://github.com/airblade/paper_trail/pull/900/files) -
43
+ Support for rails 5.1
44
+ - [#881](https://github.com/airblade/paper_trail/pull/881) - Add RSpec matcher
45
+ `have_a_version_with_changes` for easier testing.
46
+
47
+ ### Fixed
48
+
49
+ - None
50
+
6
51
  ## 5.2.3 (2016-11-29)
7
52
 
8
53
  ### Breaking Changes
@@ -24,6 +69,7 @@ recommendations of [keepachangelog.com](http://keepachangelog.com/).
24
69
  - [#868](https://github.com/airblade/paper_trail/pull/868)
25
70
  Fix usage of find_by_id when primary key is not id, affecting reifying certain records.
26
71
 
72
+
27
73
  ## 5.2.2 (2016-09-08)
28
74
 
29
75
  ### Breaking Changes
data/README.md CHANGED
@@ -10,7 +10,7 @@ has been destroyed.
10
10
 
11
11
  | Version | Documentation |
12
12
  | -------------- | ------------- |
13
- | Unreleased | https://github.com/airblade/paper_trail/blob/master/README.md |
13
+ | 6.0.0 | https://github.com/airblade/paper_trail/blob/master/README.md |
14
14
  | 5.2.3 | https://github.com/airblade/paper_trail/blob/v5.2.3/README.md |
15
15
  | 4.2.0 | https://github.com/airblade/paper_trail/blob/v4.2.0/README.md |
16
16
  | 3.0.9 | https://github.com/airblade/paper_trail/blob/v3.0.9/README.md |
@@ -49,20 +49,25 @@ has been destroyed.
49
49
  - [6.a. Custom Version Classes](#6a-custom-version-classes)
50
50
  - [6.b. Custom Serializer](#6b-custom-serializer)
51
51
  - [7. Testing](#7-testing)
52
+ - [7.a Minitest](#7a-minitest)
53
+ - [7.b RSpec](#7b-rspec)
54
+ - [7.c Cucumber](#7c-cucumber)
55
+ - [7.d Spork](#7d-spork)
56
+ - [7.e Zeus or Spring](#7e-zeus-or-spring)
52
57
  - [8. Sinatra](#8-sinatra)
53
58
 
54
59
  ## 1. Introduction
55
60
 
56
61
  ### 1.a. Compatibility
57
62
 
58
- | paper_trail | branch | tags | ruby | activerecord |
59
- | -------------- | ---------- | ------ | -------- | ------------ |
60
- | 6 (unreleased) | master | | >= 1.9.3 | >= 3.0, < 6 |
61
- | 5 | 5-stable | v5.x | >= 1.9.3 | >= 3.0, < 6 |
62
- | 4 | 4-stable | v4.x | >= 1.8.7 | >= 3.0, < 6 |
63
- | 3 | 3.0-stable | v3.x | >= 1.8.7 | >= 3.0, < 5 |
64
- | 2 | 2.7-stable | v2.x | >= 1.8.7 | >= 3.0, < 4 |
65
- | 1 | rails2 | v1.x | >= 1.8.7 | >= 2.3, < 3 |
63
+ | paper_trail | branch | tags | ruby | activerecord |
64
+ | -------------- | ---------- | ------ | -------- | ------------- |
65
+ | 6 | master | v6.x | >= 1.9.3 | >= 4.0, < 6 |
66
+ | 5 | 5-stable | v5.x | >= 1.9.3 | >= 3.0, < 5.1 |
67
+ | 4 | 4-stable | v4.x | >= 1.8.7 | >= 3.0, < 5.1 |
68
+ | 3 | 3.0-stable | v3.x | >= 1.8.7 | >= 3.0, < 5 |
69
+ | 2 | 2.7-stable | v2.x | >= 1.8.7 | >= 3.0, < 4 |
70
+ | 1 | rails2 | v1.x | >= 1.8.7 | >= 2.3, < 3 |
66
71
 
67
72
  ### 1.b. Installation
68
73
 
@@ -721,14 +726,12 @@ the `whodunnit` value for an operation inside a block like this:
721
726
 
722
727
  ```ruby
723
728
  PaperTrail.whodunnit = 'Andy Stewart'
724
- widget.whodunnit('Lucas Souza') do
729
+ widget.paper_trail.whodunnit('Lucas Souza') do
725
730
  widget.update_attributes :name => 'Wibble'
726
731
  end
727
732
  widget.versions.last.whodunnit # Lucas Souza
728
733
  widget.update_attributes :name => 'Clair'
729
734
  widget.versions.last.whodunnit # Andy Stewart
730
- widget.whodunnit('Ben Atkins') { |w| w.update_attributes :name => 'Beth' } # this syntax also works
731
- widget.versions.last.whodunnit # Ben Atkins
732
735
  ```
733
736
 
734
737
  A version's `whodunnit` records who changed the object causing the `version` to
@@ -1061,7 +1064,7 @@ Overriding associations is not recommended in general.
1061
1064
  ### 5.c. Generators
1062
1065
 
1063
1066
  PaperTrail has one generator, `paper_trail:install`. It writes, but does not
1064
- run, a migration file. It also creates a PaperTrail configuration intializer.
1067
+ run, a migration file. It also creates a PaperTrail configuration initializer.
1065
1068
  The migration adds (at least) the `versions` table. The
1066
1069
  most up-to-date documentation for this generator can be found by running `rails
1067
1070
  generate paper_trail:install --help`, but a copy is included here for
@@ -1386,26 +1389,44 @@ describe Widget do
1386
1389
  end
1387
1390
  ```
1388
1391
 
1389
- It is also possible to do assertions on the versions using `have_a_version_with`
1390
- matcher
1392
+ It is also possible to do assertions on the versions using `have_a_version_with` matcher.
1391
1393
 
1394
+ ```ruby
1395
+ describe '`have_a_version_with` matcher' do
1396
+ before do
1397
+ widget.update_attributes!(name: 'Leonard', an_integer: 1)
1398
+ widget.update_attributes!(name: 'Tom')
1399
+ widget.update_attributes!(name: 'Bob')
1400
+ end
1401
+
1402
+ it "is possible to do assertions on version attributes" do
1403
+ expect(widget).to have_a_version_with name: 'Leonard', an_integer: 1
1404
+ expect(widget).to have_a_version_with an_integer: 1
1405
+ expect(widget).to have_a_version_with name: 'Tom'
1406
+ end
1407
+ end
1392
1408
  ```
1393
- describe '`have_a_version_with` matcher' do
1394
- before do
1395
- widget.update_attributes!(:name => 'Leonard', :an_integer => 1 )
1396
- widget.update_attributes!(:name => 'Tom')
1397
- widget.update_attributes!(:name => 'Bob')
1398
- end
1409
+ There is also a `have_a_version_with_changes` matcher. This is only usable if your versions table [has an `object_changes` column for storing changesets](#3c-diffing-versions).
1399
1410
 
1400
- it "is possible to do assertions on versions" do
1401
- expect(widget).to have_a_version_with :name => 'Leonard', :an_integer => 1
1402
- expect(widget).to have_a_version_with :an_integer => 1
1403
- expect(widget).to have_a_version_with :name => 'Tom'
1404
- end
1411
+ ```ruby
1412
+ describe '`have_a_version_with_changes` matcher' do
1413
+ before do
1414
+ widget.update_attributes!(name: 'Leonard', an_integer: 1)
1415
+ widget.update_attributes!(name: 'Tom')
1416
+ widget.update_attributes!(name: 'Bob')
1405
1417
  end
1406
1418
 
1419
+ it "is possible to do assertions on version changes" do
1420
+ expect(widget).to have_a_version_with name: 'Leonard', an_integer: 2
1421
+ expect(widget).to have_a_version_with an_integer: 2
1422
+ expect(widget).to have_a_version_with name: 'Bob'
1423
+ end
1424
+ end
1407
1425
  ```
1408
1426
 
1427
+ For more examples of the RSpec matchers, see the
1428
+ [Widget spec](https://github.com/airblade/paper_trail/blob/master/spec/models/widget_spec.rb)
1429
+
1409
1430
  ### 7.c. Cucumber
1410
1431
 
1411
1432
  PaperTrail provides a helper for [Cucumber][28] that works similar to the RSpec
data/doc/triage.md ADDED
@@ -0,0 +1,27 @@
1
+ # Triage
2
+
3
+ ## Response to Usage Question
4
+
5
+ ```
6
+ Per our [contributing guide][1], please ask usage questions on [StackOverflow][2].
7
+
8
+ Due to limited volunteer time, we can only accept bug reports and feature requests here on GitHub.
9
+
10
+ Once you create a question on StackOverflow, please feel free to comment here with the URL.
11
+
12
+ For instructions on how to file a bug report, please see our [issue template][3].
13
+
14
+ [1]: https://github.com/airblade/paper_trail/blob/master/.github/CONTRIBUTING.md
15
+ [2]: https://stackoverflow.com/tags/paper-trail-gem
16
+ [3]: https://github.com/airblade/paper_trail/blob/master/.github/ISSUE_TEMPLATE.md
17
+ ```
18
+
19
+ ## Responses to Common Problems
20
+
21
+ ```
22
+ Thanks for the bug report. Per our [contributing guide][1] please use
23
+ our [bug report template][2].
24
+
25
+ [1]: https://github.com/airblade/paper_trail/blob/master/.github/CONTRIBUTING.md
26
+ [2]: https://github.com/airblade/paper_trail/blob/master/doc/bug_report_template.rb
27
+ ```
File without changes
File without changes
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", :github => "rails/rails"
6
+ gem "rspec-rails", "~> 3.5.1"
7
+ gem "rails-controller-testing"
8
+
9
+ gemspec :path => "../"
@@ -52,7 +52,7 @@ module PaperTrail
52
52
  # versions.
53
53
  # @api private
54
54
  def group_versions_by_date(versions)
55
- versions.group_by { |v| v.send(PaperTrail.timestamp_field).to_date }
55
+ versions.group_by { |v| v.created_at.to_date }
56
56
  end
57
57
  end
58
58
  end
@@ -7,7 +7,6 @@ module PaperTrail
7
7
  class Config
8
8
  include Singleton
9
9
  attr_accessor :serializer, :version_limit
10
- attr_reader :timestamp_field # deprecated
11
10
  attr_writer :track_associations
12
11
 
13
12
  def initialize
@@ -16,7 +15,6 @@ module PaperTrail
16
15
  @enabled = true
17
16
 
18
17
  # Variables which affect all threads, whose access is *not* synchronized.
19
- @timestamp_field = :created_at
20
18
  @serializer = PaperTrail::Serializers::YAML
21
19
  end
22
20
 
@@ -35,18 +33,6 @@ module PaperTrail
35
33
  )
36
34
  end
37
35
 
38
- # Set the field which records when a version was created.
39
- # @api public
40
- # @deprecated
41
- def timestamp_field=(field_name)
42
- ::ActiveSupport::Deprecation.warn(
43
- "PaperTrail.config.timestamp_field= is deprecated without replacement." \
44
- "See https://github.com/airblade/paper_trail/pull/861 for discussion",
45
- caller(1)
46
- )
47
- @timestamp_field = field_name
48
- end
49
-
50
36
  # Previously, we checked `PaperTrail::VersionAssociation.table_exists?`
51
37
  # here, but that proved to be problematic in situations when the database
52
38
  # connection had not been established, or when the database does not exist
@@ -54,7 +40,7 @@ module PaperTrail
54
40
  def track_associations?
55
41
  if @track_associations.nil?
56
42
  ActiveSupport::Deprecation.warn <<-EOS.strip_heredoc.gsub(/\s+/, " ")
57
- PaperTrail.track_associations has not been set. As of PaperTrail 5, it
43
+ PaperTrail.config.track_associations has not been set. As of PaperTrail 5, it
58
44
  defaults to false. Tracking associations is an experimental feature so
59
45
  we recommend setting PaperTrail.config.track_associations = false in
60
46
  your config/initializers/paper_trail.rb