paper_trail 6.0.0 → 6.0.1
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 +4 -4
 - data/.github/CONTRIBUTING.md +3 -3
 - data/CHANGELOG.md +15 -0
 - data/README.md +10 -20
 - data/lib/paper_trail.rb +0 -20
 - data/lib/paper_trail/frameworks/rails/controller.rb +10 -33
 - data/lib/paper_trail/version_association_concern.rb +0 -4
 - data/lib/paper_trail/version_concern.rb +1 -29
 - data/lib/paper_trail/version_number.rb +1 -1
 - data/spec/models/post_with_status_spec.rb +33 -37
 - data/test/dummy/app/controllers/application_controller.rb +5 -8
 - data/test/dummy/app/controllers/articles_controller.rb +1 -5
 - data/test/dummy/app/controllers/widgets_controller.rb +1 -5
 - data/test/dummy/app/models/animal.rb +0 -2
 - data/test/dummy/app/models/document.rb +4 -2
 - data/test/dummy/app/models/legacy_widget.rb +1 -2
 - data/test/dummy/app/models/post_with_status.rb +3 -4
 - data/test/dummy/app/models/skipper.rb +1 -4
 - data/test/dummy/app/models/translation.rb +4 -2
 - data/test/dummy/app/models/vehicle.rb +1 -1
 - data/test/dummy/app/models/widget.rb +2 -10
 - data/test/dummy/config/application.rb +0 -8
 - data/test/dummy/config/environments/development.rb +0 -5
 - data/test/dummy/config/environments/test.rb +0 -5
 - data/test/dummy/config/initializers/paper_trail.rb +0 -8
 - data/test/test_helper.rb +1 -10
 - data/test/unit/model_test.rb +16 -33
 - metadata +1 -11
 - data/test/dummy/app/helpers/application_helper.rb +0 -2
 - data/test/dummy/app/models/protected_widget.rb +0 -3
 - data/test/dummy/app/views/layouts/application.html.erb +0 -14
 - data/test/dummy/script/rails +0 -8
 - data/test/unit/protected_attrs_test.rb +0 -52
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: e2aaa66f683707d78b3d5c9a294e01c9e9b16813
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f9e5043fea515093cd21d151eda33e7b915de194
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: ac92887f5f16f868f7f5936e9e9c6353533c3a9f233989ae075d3cb1550a3c4bc9b51b6523dc22899e695b2bbfded7f3a9ed4a7bbd814fe9e9c4ec15eabea30b
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8b31ac54123aeba74eb156b5d6971c3a579e3a3cae0ee8e2b55c2c824c018e8e0267f616fb92aa09ebec1a2404b93e57e2ffe8ad4c9554a9509c4ea4d38e142f
         
     | 
    
        data/.github/CONTRIBUTING.md
    CHANGED
    
    | 
         @@ -89,9 +89,9 @@ DB=postgres bundle exec appraisal ar-5.0 rake 
     | 
|
| 
       89 
89 
     | 
    
         
             
            1. In the changelog,
         
     | 
| 
       90 
90 
     | 
    
         
             
              - Replace "Unreleased" with the date in iso-8601 format
         
     | 
| 
       91 
91 
     | 
    
         
             
              - Add a new "Unreleased" section
         
     | 
| 
       92 
     | 
    
         
            -
            1. In the readme,
         
     | 
| 
       93 
     | 
    
         
            -
              -  
     | 
| 
       94 
     | 
    
         
            -
              -  
     | 
| 
      
 92 
     | 
    
         
            +
            1. In the readme, update references to version number, including
         
     | 
| 
      
 93 
     | 
    
         
            +
              - documentation links table
         
     | 
| 
      
 94 
     | 
    
         
            +
              - compatability table
         
     | 
| 
       95 
95 
     | 
    
         
             
            1. Commit
         
     | 
| 
       96 
96 
     | 
    
         
             
            1. git tag -a -m "v5.0.0" "v5.0.0" # or whatever number
         
     | 
| 
       97 
97 
     | 
    
         
             
            1. git push --tags origin 5-stable # or whatever branch
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -17,6 +17,21 @@ recommendations of [keepachangelog.com](http://keepachangelog.com/). 
     | 
|
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
            - None
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
      
 20 
     | 
    
         
            +
            ## 6.0.1 (2016-12-04)
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            ### Breaking Changes
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            - None
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            ### Added
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            - None
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            ### Fixed
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            - Remove rails 3 features that are no longer supported, most notably,
         
     | 
| 
      
 33 
     | 
    
         
            +
              `protected_attributes`.
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       20 
35 
     | 
    
         
             
            ## 6.0.0 (2016-12-03)
         
     | 
| 
       21 
36 
     | 
    
         | 
| 
       22 
37 
     | 
    
         
             
            Now with rails 5.1 support, and less model pollution! About 40 methods that were
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -10,7 +10,8 @@ has been destroyed. 
     | 
|
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            | Version        | Documentation |
         
     | 
| 
       12 
12 
     | 
    
         
             
            | -------------- | ------------- |
         
     | 
| 
       13 
     | 
    
         
            -
            |  
     | 
| 
      
 13 
     | 
    
         
            +
            | Unreleased     | https://github.com/airblade/paper_trail/blob/master/README.md |
         
     | 
| 
      
 14 
     | 
    
         
            +
            | 6.0.1          | https://github.com/airblade/paper_trail/blob/v6.0.1/README.md |
         
     | 
| 
       14 
15 
     | 
    
         
             
            | 5.2.3          | https://github.com/airblade/paper_trail/blob/v5.2.3/README.md |
         
     | 
| 
       15 
16 
     | 
    
         
             
            | 4.2.0          | https://github.com/airblade/paper_trail/blob/v4.2.0/README.md |
         
     | 
| 
       16 
17 
     | 
    
         
             
            | 3.0.9          | https://github.com/airblade/paper_trail/blob/v3.0.9/README.md |
         
     | 
| 
         @@ -45,6 +46,7 @@ has been destroyed. 
     | 
|
| 
       45 
46 
     | 
    
         
             
              - [5.a. Single Table Inheritance](#5a-single-table-inheritance-sti)
         
     | 
| 
       46 
47 
     | 
    
         
             
              - [5.b. Configuring the `versions` Association](#5b-configuring-the-versions-association)
         
     | 
| 
       47 
48 
     | 
    
         
             
              - [5.c. Generators](#5c-generators)
         
     | 
| 
      
 49 
     | 
    
         
            +
              - [5.d. Protected Attributes](#5d-protected-attributes)
         
     | 
| 
       48 
50 
     | 
    
         
             
            - [6. Extensibility](#6-extensibility)
         
     | 
| 
       49 
51 
     | 
    
         
             
              - [6.a. Custom Version Classes](#6a-custom-version-classes)
         
     | 
| 
       50 
52 
     | 
    
         
             
              - [6.b. Custom Serializer](#6b-custom-serializer)
         
     | 
| 
         @@ -1008,30 +1010,12 @@ class ApplicationController 
     | 
|
| 
       1008 
1010 
     | 
    
         
             
            end
         
     | 
| 
       1009 
1011 
     | 
    
         
             
            ```
         
     | 
| 
       1010 
1012 
     | 
    
         | 
| 
       1011 
     | 
    
         
            -
            #### Protected Attributes and Metadata
         
     | 
| 
       1012 
     | 
    
         
            -
             
     | 
| 
       1013 
     | 
    
         
            -
            If you are using rails 3 or the [protected_attributes][17] gem you must declare
         
     | 
| 
       1014 
     | 
    
         
            -
            your metadata columns to be `attr_accessible`.
         
     | 
| 
       1015 
     | 
    
         
            -
             
     | 
| 
       1016 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       1017 
     | 
    
         
            -
            # app/models/paper_trail/version.rb
         
     | 
| 
       1018 
     | 
    
         
            -
            module PaperTrail
         
     | 
| 
       1019 
     | 
    
         
            -
              class Version < ActiveRecord::Base
         
     | 
| 
       1020 
     | 
    
         
            -
                include PaperTrail::VersionConcern
         
     | 
| 
       1021 
     | 
    
         
            -
                attr_accessible :author_id, :word_count, :answer
         
     | 
| 
       1022 
     | 
    
         
            -
              end
         
     | 
| 
       1023 
     | 
    
         
            -
            end
         
     | 
| 
       1024 
     | 
    
         
            -
            ```
         
     | 
| 
       1025 
     | 
    
         
            -
             
     | 
| 
       1026 
     | 
    
         
            -
            If you're using [strong_parameters][18] instead of [protected_attributes][17]
         
     | 
| 
       1027 
     | 
    
         
            -
            then there is no need to use `attr_accessible`.
         
     | 
| 
       1028 
     | 
    
         
            -
             
     | 
| 
       1029 
1013 
     | 
    
         
             
            ## 5. ActiveRecord
         
     | 
| 
       1030 
1014 
     | 
    
         | 
| 
       1031 
1015 
     | 
    
         
             
            ### 5.a. Single Table Inheritance (STI)
         
     | 
| 
       1032 
1016 
     | 
    
         | 
| 
       1033 
1017 
     | 
    
         
             
            PaperTrail supports [Single Table Inheritance][39], and even supports an
         
     | 
| 
       1034 
     | 
    
         
            -
            un-versioned base model, as of 23ffbdc7e1 
     | 
| 
      
 1018 
     | 
    
         
            +
            un-versioned base model, as of `23ffbdc7e1`.
         
     | 
| 
       1035 
1019 
     | 
    
         | 
| 
       1036 
1020 
     | 
    
         
             
            ```ruby
         
     | 
| 
       1037 
1021 
     | 
    
         
             
            class Fruit < ActiveRecord::Base
         
     | 
| 
         @@ -1087,6 +1071,12 @@ Runtime options: 
     | 
|
| 
       1087 
1071 
     | 
    
         
             
            Generates (but does not run) a migration to add a versions table.  Also generates an initializer file for configuring PaperTrail
         
     | 
| 
       1088 
1072 
     | 
    
         
             
            ```
         
     | 
| 
       1089 
1073 
     | 
    
         | 
| 
      
 1074 
     | 
    
         
            +
            ### 5.d. Protected Attributes
         
     | 
| 
      
 1075 
     | 
    
         
            +
             
     | 
| 
      
 1076 
     | 
    
         
            +
            As of version 6, PT no longer supports rails 3 or the [protected_attributes][17]
         
     | 
| 
      
 1077 
     | 
    
         
            +
            gem. If you are still using them, you may use PT 5 or lower. We recommend
         
     | 
| 
      
 1078 
     | 
    
         
            +
            upgrading to [strong_parameters][18] as soon as possible.
         
     | 
| 
      
 1079 
     | 
    
         
            +
             
     | 
| 
       1090 
1080 
     | 
    
         
             
            ## 6. Extensibility
         
     | 
| 
       1091 
1081 
     | 
    
         | 
| 
       1092 
1082 
     | 
    
         
             
            ### 6.a. Custom Version Classes
         
     | 
    
        data/lib/paper_trail.rb
    CHANGED
    
    | 
         @@ -121,15 +121,6 @@ module PaperTrail 
     | 
|
| 
       121 
121 
     | 
    
         
             
                  PaperTrail.config.serializer
         
     | 
| 
       122 
122 
     | 
    
         
             
                end
         
     | 
| 
       123 
123 
     | 
    
         | 
| 
       124 
     | 
    
         
            -
                # Returns a boolean indicating whether "protected attibutes" should be
         
     | 
| 
       125 
     | 
    
         
            -
                # configured, e.g. attr_accessible, mass_assignment_sanitizer,
         
     | 
| 
       126 
     | 
    
         
            -
                # whitelist_attributes, etc.
         
     | 
| 
       127 
     | 
    
         
            -
                # @api public
         
     | 
| 
       128 
     | 
    
         
            -
                def active_record_protected_attributes?
         
     | 
| 
       129 
     | 
    
         
            -
                  @active_record_protected_attributes ||= ::ActiveRecord::VERSION::MAJOR < 4 ||
         
     | 
| 
       130 
     | 
    
         
            -
                    !!defined?(ProtectedAttributes)
         
     | 
| 
       131 
     | 
    
         
            -
                end
         
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
124 
     | 
    
         
             
                # @api public
         
     | 
| 
       134 
125 
     | 
    
         
             
                def transaction?
         
     | 
| 
       135 
126 
     | 
    
         
             
                  ::ActiveRecord::Base.connection.open_transactions > 0
         
     | 
| 
         @@ -167,17 +158,6 @@ module PaperTrail 
     | 
|
| 
       167 
158 
     | 
    
         
             
              end
         
     | 
| 
       168 
159 
     | 
    
         
             
            end
         
     | 
| 
       169 
160 
     | 
    
         | 
| 
       170 
     | 
    
         
            -
            # If available, ensure that the `protected_attributes` gem is loaded
         
     | 
| 
       171 
     | 
    
         
            -
            # before the `Version` class.
         
     | 
| 
       172 
     | 
    
         
            -
            unless PaperTrail.active_record_protected_attributes?
         
     | 
| 
       173 
     | 
    
         
            -
              PaperTrail.send(:remove_instance_variable, :@active_record_protected_attributes)
         
     | 
| 
       174 
     | 
    
         
            -
              begin
         
     | 
| 
       175 
     | 
    
         
            -
                require "protected_attributes"
         
     | 
| 
       176 
     | 
    
         
            -
              rescue LoadError # rubocop:disable Lint/HandleExceptions
         
     | 
| 
       177 
     | 
    
         
            -
                # In case `protected_attributes` gem is not available.
         
     | 
| 
       178 
     | 
    
         
            -
              end
         
     | 
| 
       179 
     | 
    
         
            -
            end
         
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
161 
     | 
    
         
             
            ActiveSupport.on_load(:active_record) do
         
     | 
| 
       182 
162 
     | 
    
         
             
              include PaperTrail::Model
         
     | 
| 
       183 
163 
     | 
    
         
             
            end
         
     | 
| 
         @@ -4,24 +4,11 @@ module PaperTrail 
     | 
|
| 
       4 
4 
     | 
    
         
             
                # information to the model layer, with `controller_info` and `whodunnit`.
         
     | 
| 
       5 
5 
     | 
    
         
             
                # Also includes a convenient on/off switch, `enabled_for_controller`.
         
     | 
| 
       6 
6 
     | 
    
         
             
                module Controller
         
     | 
| 
       7 
     | 
    
         
            -
                  def self.included( 
     | 
| 
       8 
     | 
    
         
            -
                     
     | 
| 
      
 7 
     | 
    
         
            +
                  def self.included(controller)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    controller.before_action(
         
     | 
| 
       9 
9 
     | 
    
         
             
                      :set_paper_trail_enabled_for_controller,
         
     | 
| 
       10 
10 
     | 
    
         
             
                      :set_paper_trail_controller_info
         
     | 
| 
       11 
     | 
    
         
            -
                     
     | 
| 
       12 
     | 
    
         
            -
                    after = [
         
     | 
| 
       13 
     | 
    
         
            -
                      :warn_about_not_setting_whodunnit
         
     | 
| 
       14 
     | 
    
         
            -
                    ]
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                    if base.respond_to? :before_action
         
     | 
| 
       17 
     | 
    
         
            -
                      # Rails 4+
         
     | 
| 
       18 
     | 
    
         
            -
                      before.map { |sym| base.before_action sym }
         
     | 
| 
       19 
     | 
    
         
            -
                      after.map  { |sym| base.after_action  sym }
         
     | 
| 
       20 
     | 
    
         
            -
                    else
         
     | 
| 
       21 
     | 
    
         
            -
                      # Rails 3.
         
     | 
| 
       22 
     | 
    
         
            -
                      before.map { |sym| base.before_filter sym }
         
     | 
| 
       23 
     | 
    
         
            -
                      after.map  { |sym| base.after_filter  sym }
         
     | 
| 
       24 
     | 
    
         
            -
                    end
         
     | 
| 
      
 11 
     | 
    
         
            +
                    )
         
     | 
| 
       25 
12 
     | 
    
         
             
                  end
         
     | 
| 
       26 
13 
     | 
    
         | 
| 
       27 
14 
     | 
    
         
             
                  protected
         
     | 
| 
         @@ -89,24 +76,14 @@ module PaperTrail 
     | 
|
| 
       89 
76 
     | 
    
         
             
                    ::PaperTrail.controller_info = info_for_paper_trail if ::PaperTrail.enabled_for_controller?
         
     | 
| 
       90 
77 
     | 
    
         
             
                  end
         
     | 
| 
       91 
78 
     | 
    
         | 
| 
      
 79 
     | 
    
         
            +
                  # We have removed this warning. We no longer add it as a callback.
         
     | 
| 
      
 80 
     | 
    
         
            +
                  # However, some people use `skip_after_action :warn_about_not_setting_whodunnit`,
         
     | 
| 
      
 81 
     | 
    
         
            +
                  # so removing this method would be a breaking change. We can remove it
         
     | 
| 
      
 82 
     | 
    
         
            +
                  # in the next major version.
         
     | 
| 
       92 
83 
     | 
    
         
             
                  def warn_about_not_setting_whodunnit
         
     | 
| 
       93 
     | 
    
         
            -
                     
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
                     
     | 
| 
       96 
     | 
    
         
            -
                    whodunnit_blank = ::PaperTrail.whodunnit.blank?
         
     | 
| 
       97 
     | 
    
         
            -
                    if user_present && whodunnit_blank && !@set_paper_trail_whodunnit_called
         
     | 
| 
       98 
     | 
    
         
            -
                      source_file_location = self.class.instance_methods(false).map { |m|
         
     | 
| 
       99 
     | 
    
         
            -
                        self.class.instance_method(m).source_location.first
         
     | 
| 
       100 
     | 
    
         
            -
                      }.uniq.first
         
     | 
| 
       101 
     | 
    
         
            -
                      ::Kernel.warn <<-EOS.strip_heredoc
         
     | 
| 
       102 
     | 
    
         
            -
                        #{source_file_location}:
         
     | 
| 
       103 
     | 
    
         
            -
                        user_for_paper_trail is present, but whodunnit has not been set.
         
     | 
| 
       104 
     | 
    
         
            -
                        PaperTrail no longer adds the set_paper_trail_whodunnit callback for
         
     | 
| 
       105 
     | 
    
         
            -
                        you. To continue recording whodunnit, please add this before_action
         
     | 
| 
       106 
     | 
    
         
            -
                        callback to your ApplicationController. For more information,
         
     | 
| 
       107 
     | 
    
         
            -
                        please see https://git.io/vrTsk
         
     | 
| 
       108 
     | 
    
         
            -
                      EOS
         
     | 
| 
       109 
     | 
    
         
            -
                    end
         
     | 
| 
      
 84 
     | 
    
         
            +
                    ::ActiveSupport::Deprecation.warn(
         
     | 
| 
      
 85 
     | 
    
         
            +
                      "warn_about_not_setting_whodunnit is a no-op and is deprecated."
         
     | 
| 
      
 86 
     | 
    
         
            +
                    )
         
     | 
| 
       110 
87 
     | 
    
         
             
                  end
         
     | 
| 
       111 
88 
     | 
    
         
             
                end
         
     | 
| 
       112 
89 
     | 
    
         
             
              end
         
     | 
| 
         @@ -21,22 +21,7 @@ module PaperTrail 
     | 
|
| 
       21 
21 
     | 
    
         
             
                  end
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
                  validates_presence_of :event
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                  if PaperTrail.active_record_protected_attributes?
         
     | 
| 
       26 
     | 
    
         
            -
                    attr_accessible(
         
     | 
| 
       27 
     | 
    
         
            -
                      :item_type,
         
     | 
| 
       28 
     | 
    
         
            -
                      :item_id,
         
     | 
| 
       29 
     | 
    
         
            -
                      :event,
         
     | 
| 
       30 
     | 
    
         
            -
                      :whodunnit,
         
     | 
| 
       31 
     | 
    
         
            -
                      :object,
         
     | 
| 
       32 
     | 
    
         
            -
                      :object_changes,
         
     | 
| 
       33 
     | 
    
         
            -
                      :transaction_id,
         
     | 
| 
       34 
     | 
    
         
            -
                      :created_at
         
     | 
| 
       35 
     | 
    
         
            -
                    )
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
24 
     | 
    
         
             
                  after_create :enforce_version_limit!
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
25 
     | 
    
         
             
                  scope :within_transaction, ->(id) { where transaction_id: id }
         
     | 
| 
       41 
26 
     | 
    
         
             
                end
         
     | 
| 
       42 
27 
     | 
    
         | 
| 
         @@ -225,9 +210,7 @@ module PaperTrail 
     | 
|
| 
       225 
210 
     | 
    
         
             
                #
         
     | 
| 
       226 
211 
     | 
    
         
             
                def reify(options = {})
         
     | 
| 
       227 
212 
     | 
    
         
             
                  return nil if object.nil?
         
     | 
| 
       228 
     | 
    
         
            -
                   
     | 
| 
       229 
     | 
    
         
            -
                    ::PaperTrail::Reifier.reify(self, options)
         
     | 
| 
       230 
     | 
    
         
            -
                  end
         
     | 
| 
      
 213 
     | 
    
         
            +
                  ::PaperTrail::Reifier.reify(self, options)
         
     | 
| 
       231 
214 
     | 
    
         
             
                end
         
     | 
| 
       232 
215 
     | 
    
         | 
| 
       233 
216 
     | 
    
         
             
                # Returns what changed in this version of the item.
         
     | 
| 
         @@ -323,17 +306,6 @@ module PaperTrail 
     | 
|
| 
       323 
306 
     | 
    
         
             
                  end
         
     | 
| 
       324 
307 
     | 
    
         
             
                end
         
     | 
| 
       325 
308 
     | 
    
         | 
| 
       326 
     | 
    
         
            -
                # In Rails 3.1+, calling reify on a previous version confuses the
         
     | 
| 
       327 
     | 
    
         
            -
                # IdentityMap, if enabled. This prevents insertion into the map.
         
     | 
| 
       328 
     | 
    
         
            -
                # @api private
         
     | 
| 
       329 
     | 
    
         
            -
                def without_identity_map(&block)
         
     | 
| 
       330 
     | 
    
         
            -
                  if defined?(::ActiveRecord::IdentityMap) && ::ActiveRecord::IdentityMap.respond_to?(:without)
         
     | 
| 
       331 
     | 
    
         
            -
                    ::ActiveRecord::IdentityMap.without(&block)
         
     | 
| 
       332 
     | 
    
         
            -
                  else
         
     | 
| 
       333 
     | 
    
         
            -
                    yield
         
     | 
| 
       334 
     | 
    
         
            -
                  end
         
     | 
| 
       335 
     | 
    
         
            -
                end
         
     | 
| 
       336 
     | 
    
         
            -
             
     | 
| 
       337 
309 
     | 
    
         
             
                # Checks that a value has been set for the `version_limit` config
         
     | 
| 
       338 
310 
     | 
    
         
             
                # option, and if so enforces it.
         
     | 
| 
       339 
311 
     | 
    
         
             
                # @api private
         
     | 
| 
         @@ -1,49 +1,45 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "rails_helper"
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            # This model tests ActiveRecord::Enum, which was added in AR 4.1
         
     | 
| 
       4 
     | 
    
         
            -
            # http://edgeguides.rubyonrails.org/4_1_release_notes.html#active-record-enums
         
     | 
| 
       5 
3 
     | 
    
         
             
            describe PostWithStatus, type: :model do
         
     | 
| 
       6 
     | 
    
         
            -
               
     | 
| 
       7 
     | 
    
         
            -
                 
     | 
| 
       8 
     | 
    
         
            -
                  let(:post) { described_class.create!(status: "draft") }
         
     | 
| 
      
 4 
     | 
    
         
            +
              with_versioning do
         
     | 
| 
      
 5 
     | 
    
         
            +
                let(:post) { described_class.create!(status: "draft") }
         
     | 
| 
       9 
6 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                it "should stash the enum value properly in versions" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  post.published!
         
     | 
| 
      
 9 
     | 
    
         
            +
                  post.archived!
         
     | 
| 
      
 10 
     | 
    
         
            +
                  expect(post.paper_trail.previous_version.published?).to be true
         
     | 
| 
      
 11 
     | 
    
         
            +
                end
         
     | 
| 
       15 
12 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                it "can read enums in version records written by PT 4" do
         
     | 
| 
      
 14 
     | 
    
         
            +
                  post = described_class.create(status: "draft")
         
     | 
| 
      
 15 
     | 
    
         
            +
                  post.published!
         
     | 
| 
      
 16 
     | 
    
         
            +
                  version = post.versions.last
         
     | 
| 
      
 17 
     | 
    
         
            +
                  # Simulate behavior PT 4, which used to save the string version of
         
     | 
| 
      
 18 
     | 
    
         
            +
                  # enums to `object_changes`
         
     | 
| 
      
 19 
     | 
    
         
            +
                  version.update(object_changes: "---\nid:\n- \n- 1\nstatus:\n- draft\n- published\n")
         
     | 
| 
      
 20 
     | 
    
         
            +
                  assert_equal %w(draft published), version.changeset["status"]
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
       25 
22 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 23 
     | 
    
         
            +
                context "storing enum object_changes" do
         
     | 
| 
      
 24 
     | 
    
         
            +
                  subject { post.versions.last }
         
     | 
| 
       28 
25 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                    end
         
     | 
| 
      
 26 
     | 
    
         
            +
                  it "should stash the enum value properly in versions object_changes" do
         
     | 
| 
      
 27 
     | 
    
         
            +
                    post.published!
         
     | 
| 
      
 28 
     | 
    
         
            +
                    post.archived!
         
     | 
| 
      
 29 
     | 
    
         
            +
                    expect(subject.changeset["status"]).to eql %w(published archived)
         
     | 
| 
       34 
30 
     | 
    
         
             
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
       35 
32 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
                describe "#touch_with_version" do
         
     | 
| 
      
 34 
     | 
    
         
            +
                  it "preserves the enum value (and all other attributes)" do
         
     | 
| 
      
 35 
     | 
    
         
            +
                    post = described_class.create(status: :draft)
         
     | 
| 
      
 36 
     | 
    
         
            +
                    expect(post.versions.count).to eq(1)
         
     | 
| 
      
 37 
     | 
    
         
            +
                    expect(post.status).to eq("draft")
         
     | 
| 
      
 38 
     | 
    
         
            +
                    Timecop.travel 1.second.since # because MySQL lacks fractional seconds precision
         
     | 
| 
      
 39 
     | 
    
         
            +
                    post.paper_trail.touch_with_version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    expect(post.versions.count).to eq(2)
         
     | 
| 
      
 41 
     | 
    
         
            +
                    expect(post.versions.last[:object]).to include("status: 0")
         
     | 
| 
      
 42 
     | 
    
         
            +
                    expect(post.paper_trail.previous_version.status).to eq("draft")
         
     | 
| 
       47 
43 
     | 
    
         
             
                  end
         
     | 
| 
       48 
44 
     | 
    
         
             
                end
         
     | 
| 
       49 
45 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,18 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            class ApplicationController < ActionController::Base
         
     | 
| 
       2 
2 
     | 
    
         
             
              protect_from_forgery
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
              # Rails 5 deprecates `before_filter`
         
     | 
| 
       5 
     | 
    
         
            -
              name_of_before_callback = respond_to?(:before_action) ? :before_action : :before_filter
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
4 
     | 
    
         
             
              # Some applications and libraries modify `current_user`. Their changes need
         
     | 
| 
       8 
5 
     | 
    
         
             
              # to be reflected in `whodunnit`, so the `set_paper_trail_whodunnit` below
         
     | 
| 
       9 
6 
     | 
    
         
             
              # must happen after this.
         
     | 
| 
       10 
     | 
    
         
            -
               
     | 
| 
      
 7 
     | 
    
         
            +
              before_action :modify_current_user
         
     | 
| 
       11 
8 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
              #  
     | 
| 
       13 
     | 
    
         
            -
              #  
     | 
| 
       14 
     | 
    
         
            -
              #  
     | 
| 
       15 
     | 
    
         
            -
               
     | 
| 
      
 9 
     | 
    
         
            +
              # PT used to add this callback automatically. Now people are required to add
         
     | 
| 
      
 10 
     | 
    
         
            +
              # it themsevles, like this, allowing them to control the order of callbacks.
         
     | 
| 
      
 11 
     | 
    
         
            +
              # The `modify_current_user` callback above shows why this control is useful.
         
     | 
| 
      
 12 
     | 
    
         
            +
              before_action :set_paper_trail_whodunnit
         
     | 
| 
       16 
13 
     | 
    
         | 
| 
       17 
14 
     | 
    
         
             
              def rescue_action(e)
         
     | 
| 
       18 
15 
     | 
    
         
             
                raise e
         
     | 
| 
         @@ -11,10 +11,6 @@ class ArticlesController < ApplicationController 
     | 
|
| 
       11 
11 
     | 
    
         
             
              private
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
              def article_params
         
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                  params[:article]
         
     | 
| 
       16 
     | 
    
         
            -
                else
         
     | 
| 
       17 
     | 
    
         
            -
                  params.require(:article).permit!
         
     | 
| 
       18 
     | 
    
         
            -
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
                params.require(:article).permit!
         
     | 
| 
       19 
15 
     | 
    
         
             
              end
         
     | 
| 
       20 
16 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,8 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # This model tests ActiveRecord::Enum, which was added in AR 4.1
         
     | 
| 
      
 2 
     | 
    
         
            +
            # http://edgeguides.rubyonrails.org/4_1_release_notes.html#active-record-enums
         
     | 
| 
       1 
3 
     | 
    
         
             
            class PostWithStatus < ActiveRecord::Base
         
     | 
| 
       2 
4 
     | 
    
         
             
              has_paper_trail
         
     | 
| 
       3 
5 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
       5 
     | 
    
         
            -
              if defined?(ActiveRecord::Enum)
         
     | 
| 
       6 
     | 
    
         
            -
                enum status: { draft: 0, published: 1, archived: 2 }
         
     | 
| 
       7 
     | 
    
         
            -
              end
         
     | 
| 
      
 6 
     | 
    
         
            +
              enum status: { draft: 0, published: 1, archived: 2 }
         
     | 
| 
       8 
7 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,16 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            class Widget < ActiveRecord::Base
         
     | 
| 
      
 2 
     | 
    
         
            +
              EXCLUDED_NAME = "Biglet".freeze
         
     | 
| 
       2 
3 
     | 
    
         
             
              has_paper_trail
         
     | 
| 
       3 
4 
     | 
    
         
             
              has_one :wotsit
         
     | 
| 
      
 5 
     | 
    
         
            +
              has_many :fluxors, -> { order(:name) }
         
     | 
| 
       4 
6 
     | 
    
         
             
              has_many :whatchamajiggers, as: :owner
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              EXCLUDED_NAME = "Biglet".freeze
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
7 
     | 
    
         
             
              validates :name, exclusion: { in: [EXCLUDED_NAME] }
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              # `has_many` syntax for specifying order uses a lambda in Rails 4
         
     | 
| 
       11 
     | 
    
         
            -
              if ::ActiveRecord::VERSION::MAJOR >= 4
         
     | 
| 
       12 
     | 
    
         
            -
                has_many :fluxors, -> { order(:name) }
         
     | 
| 
       13 
     | 
    
         
            -
              else
         
     | 
| 
       14 
     | 
    
         
            -
                has_many :fluxors, order: :name
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
8 
     | 
    
         
             
            end
         
     | 
| 
         @@ -45,14 +45,6 @@ module Dummy 
     | 
|
| 
       45 
45 
     | 
    
         
             
                # like if you have constraints or database-specific column types
         
     | 
| 
       46 
46 
     | 
    
         
             
                # config.active_record.schema_format = :sql
         
     | 
| 
       47 
47 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
                # Enforce whitelist mode for mass assignment.
         
     | 
| 
       49 
     | 
    
         
            -
                # This will create an empty whitelist of attributes available for mass-assignment for all models
         
     | 
| 
       50 
     | 
    
         
            -
                # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
         
     | 
| 
       51 
     | 
    
         
            -
                # parameters by using an attr_accessible or attr_protected declaration.
         
     | 
| 
       52 
     | 
    
         
            -
                if ::PaperTrail.active_record_protected_attributes?
         
     | 
| 
       53 
     | 
    
         
            -
                  config.active_record.whitelist_attributes = false
         
     | 
| 
       54 
     | 
    
         
            -
                end
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
48 
     | 
    
         
             
                # `config.assets` is a `NoMethodError` in rails 5.
         
     | 
| 
       57 
49 
     | 
    
         
             
                config.assets.enabled = false if config.respond_to?(:assets)
         
     | 
| 
       58 
50 
     | 
    
         | 
| 
         @@ -22,11 +22,6 @@ Dummy::Application.configure do 
     | 
|
| 
       22 
22 
     | 
    
         
             
              # Only use best-standards-support built into browsers
         
     | 
| 
       23 
23 
     | 
    
         
             
              config.action_dispatch.best_standards_support = :builtin
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
              # Raise exception on mass assignment protection for Active Record models
         
     | 
| 
       26 
     | 
    
         
            -
              if ::PaperTrail.active_record_protected_attributes?
         
     | 
| 
       27 
     | 
    
         
            -
                config.active_record.mass_assignment_sanitizer = :strict
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
25 
     | 
    
         
             
              # Log the query plan for queries taking more than this (works
         
     | 
| 
       31 
26 
     | 
    
         
             
              # with SQLite, MySQL, and PostgreSQL)
         
     | 
| 
       32 
27 
     | 
    
         
             
              # config.active_record.auto_explain_threshold_in_seconds = 0.5
         
     | 
| 
         @@ -41,11 +41,6 @@ Dummy::Application.configure do 
     | 
|
| 
       41 
41 
     | 
    
         
             
              # ActionMailer::Base.deliveries array.
         
     | 
| 
       42 
42 
     | 
    
         
             
              # config.action_mailer.delivery_method = :test
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
              # Raise exception on mass assignment protection for Active Record models
         
     | 
| 
       45 
     | 
    
         
            -
              if ::PaperTrail.active_record_protected_attributes?
         
     | 
| 
       46 
     | 
    
         
            -
                config.active_record.mass_assignment_sanitizer = :strict
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
44 
     | 
    
         
             
              # Print deprecation notices to the stderr
         
     | 
| 
       50 
45 
     | 
    
         
             
              config.active_support.deprecation = :stderr
         
     | 
| 
       51 
46 
     | 
    
         
             
            end
         
     | 
    
        data/test/test_helper.rb
    CHANGED
    
    | 
         @@ -104,16 +104,7 @@ module CleanupCallbacks 
     | 
|
| 
       104 
104 
     | 
    
         
             
                original_callbacks = nil
         
     | 
| 
       105 
105 
     | 
    
         | 
| 
       106 
106 
     | 
    
         
             
                setup do
         
     | 
| 
       107 
     | 
    
         
            -
                   
     | 
| 
       108 
     | 
    
         
            -
                    original_callbacks = target.send(:get_callbacks, type).deep_dup
         
     | 
| 
       109 
     | 
    
         
            -
                  else
         
     | 
| 
       110 
     | 
    
         
            -
                    # While this defeats the purpose of targeted callback
         
     | 
| 
       111 
     | 
    
         
            -
                    # cleanup, callbacks were incredibly difficult to modify
         
     | 
| 
       112 
     | 
    
         
            -
                    # prior to Rails 4, and Rails internal callbacks were only
         
     | 
| 
       113 
     | 
    
         
            -
                    # used for autosaving associations in Rails 3. Our tests
         
     | 
| 
       114 
     | 
    
         
            -
                    # don't care whether a Fluxor's widget is autosaved.
         
     | 
| 
       115 
     | 
    
         
            -
                    target.reset_callbacks(type)
         
     | 
| 
       116 
     | 
    
         
            -
                  end
         
     | 
| 
      
 107 
     | 
    
         
            +
                  original_callbacks = target.send(:get_callbacks, type).deep_dup
         
     | 
| 
       117 
108 
     | 
    
         
             
                end
         
     | 
| 
       118 
109 
     | 
    
         | 
| 
       119 
110 
     | 
    
         
             
                teardown do
         
     | 
    
        data/test/unit/model_test.rb
    CHANGED
    
    | 
         @@ -678,39 +678,22 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase 
     | 
|
| 
       678 
678 
     | 
    
         
             
                end
         
     | 
| 
       679 
679 
     | 
    
         
             
              end
         
     | 
| 
       680 
680 
     | 
    
         | 
| 
       681 
     | 
    
         
            -
               
     | 
| 
       682 
     | 
    
         
            -
                 
     | 
| 
       683 
     | 
    
         
            -
             
     | 
| 
       684 
     | 
    
         
            -
                 
     | 
| 
       685 
     | 
    
         
            -
             
     | 
| 
       686 
     | 
    
         
            -
                 
     | 
| 
       687 
     | 
    
         
            -
             
     | 
| 
       688 
     | 
    
         
            -
             
     | 
| 
       689 
     | 
    
         
            -
             
     | 
| 
       690 
     | 
    
         
            -
             
     | 
| 
       691 
     | 
    
         
            -
             
     | 
| 
       692 
     | 
    
         
            -
             
     | 
| 
       693 
     | 
    
         
            -
             
     | 
| 
       694 
     | 
    
         
            -
             
     | 
| 
       695 
     | 
    
         
            -
                 
     | 
| 
       696 
     | 
    
         
            -
                 
     | 
| 
       697 
     | 
    
         
            -
                #
         
     | 
| 
       698 
     | 
    
         
            -
                # In rails 5, `capture` is deprecated in favor of `capture_io`.
         
     | 
| 
       699 
     | 
    
         
            -
                #
         
     | 
| 
       700 
     | 
    
         
            -
                should "not generate warning" do
         
     | 
| 
       701 
     | 
    
         
            -
                  assert_update_raises_nothing = lambda {
         
     | 
| 
       702 
     | 
    
         
            -
                    assert_nothing_raised {
         
     | 
| 
       703 
     | 
    
         
            -
                      @wotsit.update_attributes! name: "changed"
         
     | 
| 
       704 
     | 
    
         
            -
                    }
         
     | 
| 
       705 
     | 
    
         
            -
                  }
         
     | 
| 
       706 
     | 
    
         
            -
                  warnings =
         
     | 
| 
       707 
     | 
    
         
            -
                    if respond_to?(:capture_io)
         
     | 
| 
       708 
     | 
    
         
            -
                      capture_io { assert_update_raises_nothing.call }.last
         
     | 
| 
       709 
     | 
    
         
            -
                    else
         
     | 
| 
       710 
     | 
    
         
            -
                      capture(:stderr) { assert_update_raises_nothing.call }
         
     | 
| 
       711 
     | 
    
         
            -
                    end
         
     | 
| 
       712 
     | 
    
         
            -
                  assert_equal "", warnings
         
     | 
| 
       713 
     | 
    
         
            -
                end
         
     | 
| 
      
 681 
     | 
    
         
            +
              test "update_attributes! records timestamps" do
         
     | 
| 
      
 682 
     | 
    
         
            +
                wotsit = Wotsit.create! name: "wotsit"
         
     | 
| 
      
 683 
     | 
    
         
            +
                wotsit.update_attributes! name: "changed"
         
     | 
| 
      
 684 
     | 
    
         
            +
                reified = wotsit.versions.last.reify
         
     | 
| 
      
 685 
     | 
    
         
            +
                assert_not_nil reified.created_at
         
     | 
| 
      
 686 
     | 
    
         
            +
                assert_not_nil reified.updated_at
         
     | 
| 
      
 687 
     | 
    
         
            +
              end
         
     | 
| 
      
 688 
     | 
    
         
            +
             
     | 
| 
      
 689 
     | 
    
         
            +
              # Tests that it doesn't try to write created_on as an attribute just because
         
     | 
| 
      
 690 
     | 
    
         
            +
              # a created_on method exists.
         
     | 
| 
      
 691 
     | 
    
         
            +
              #
         
     | 
| 
      
 692 
     | 
    
         
            +
              # - ActiveModel::MissingAttributeError in Rails 4
         
     | 
| 
      
 693 
     | 
    
         
            +
              #
         
     | 
| 
      
 694 
     | 
    
         
            +
              test "update_attributes! does not raise error" do
         
     | 
| 
      
 695 
     | 
    
         
            +
                wotsit = Wotsit.create! name: "name1"
         
     | 
| 
      
 696 
     | 
    
         
            +
                assert_nothing_raised { wotsit.update_attributes! name: "name2" }
         
     | 
| 
       714 
697 
     | 
    
         
             
              end
         
     | 
| 
       715 
698 
     | 
    
         | 
| 
       716 
699 
     | 
    
         
             
              context "A subclass" do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: paper_trail
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 6.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 6.0.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Andy Stewart
         
     | 
| 
         @@ -356,7 +356,6 @@ files: 
     | 
|
| 
       356 
356 
     | 
    
         
             
            - test/dummy/app/controllers/articles_controller.rb
         
     | 
| 
       357 
357 
     | 
    
         
             
            - test/dummy/app/controllers/test_controller.rb
         
     | 
| 
       358 
358 
     | 
    
         
             
            - test/dummy/app/controllers/widgets_controller.rb
         
     | 
| 
       359 
     | 
    
         
            -
            - test/dummy/app/helpers/application_helper.rb
         
     | 
| 
       360 
359 
     | 
    
         
             
            - test/dummy/app/models/animal.rb
         
     | 
| 
       361 
360 
     | 
    
         
             
            - test/dummy/app/models/article.rb
         
     | 
| 
       362 
361 
     | 
    
         
             
            - test/dummy/app/models/authorship.rb
         
     | 
| 
         @@ -389,7 +388,6 @@ files: 
     | 
|
| 
       389 
388 
     | 
    
         
             
            - test/dummy/app/models/person.rb
         
     | 
| 
       390 
389 
     | 
    
         
             
            - test/dummy/app/models/post.rb
         
     | 
| 
       391 
390 
     | 
    
         
             
            - test/dummy/app/models/post_with_status.rb
         
     | 
| 
       392 
     | 
    
         
            -
            - test/dummy/app/models/protected_widget.rb
         
     | 
| 
       393 
391 
     | 
    
         
             
            - test/dummy/app/models/quotation.rb
         
     | 
| 
       394 
392 
     | 
    
         
             
            - test/dummy/app/models/section.rb
         
     | 
| 
       395 
393 
     | 
    
         
             
            - test/dummy/app/models/skipper.rb
         
     | 
| 
         @@ -406,7 +404,6 @@ files: 
     | 
|
| 
       406 
404 
     | 
    
         
             
            - test/dummy/app/versions/json_version.rb
         
     | 
| 
       407 
405 
     | 
    
         
             
            - test/dummy/app/versions/kitchen/banana_version.rb
         
     | 
| 
       408 
406 
     | 
    
         
             
            - test/dummy/app/versions/post_version.rb
         
     | 
| 
       409 
     | 
    
         
            -
            - test/dummy/app/views/layouts/application.html.erb
         
     | 
| 
       410 
407 
     | 
    
         
             
            - test/dummy/config.ru
         
     | 
| 
       411 
408 
     | 
    
         
             
            - test/dummy/config/application.rb
         
     | 
| 
       412 
409 
     | 
    
         
             
            - test/dummy/config/boot.rb
         
     | 
| 
         @@ -427,7 +424,6 @@ files: 
     | 
|
| 
       427 
424 
     | 
    
         
             
            - test/dummy/config/routes.rb
         
     | 
| 
       428 
425 
     | 
    
         
             
            - test/dummy/db/migrate/20110208155312_set_up_test_tables.rb
         
     | 
| 
       429 
426 
     | 
    
         
             
            - test/dummy/db/schema.rb
         
     | 
| 
       430 
     | 
    
         
            -
            - test/dummy/script/rails
         
     | 
| 
       431 
427 
     | 
    
         
             
            - test/functional/controller_test.rb
         
     | 
| 
       432 
428 
     | 
    
         
             
            - test/functional/enabled_for_controller_test.rb
         
     | 
| 
       433 
429 
     | 
    
         
             
            - test/functional/modular_sinatra_test.rb
         
     | 
| 
         @@ -439,7 +435,6 @@ files: 
     | 
|
| 
       439 
435 
     | 
    
         
             
            - test/unit/cleaner_test.rb
         
     | 
| 
       440 
436 
     | 
    
         
             
            - test/unit/inheritance_column_test.rb
         
     | 
| 
       441 
437 
     | 
    
         
             
            - test/unit/model_test.rb
         
     | 
| 
       442 
     | 
    
         
            -
            - test/unit/protected_attrs_test.rb
         
     | 
| 
       443 
438 
     | 
    
         
             
            - test/unit/serializer_test.rb
         
     | 
| 
       444 
439 
     | 
    
         
             
            - test/unit/serializers/json_test.rb
         
     | 
| 
       445 
440 
     | 
    
         
             
            - test/unit/serializers/mixin_json_test.rb
         
     | 
| 
         @@ -505,7 +500,6 @@ test_files: 
     | 
|
| 
       505 
500 
     | 
    
         
             
            - test/dummy/app/controllers/articles_controller.rb
         
     | 
| 
       506 
501 
     | 
    
         
             
            - test/dummy/app/controllers/test_controller.rb
         
     | 
| 
       507 
502 
     | 
    
         
             
            - test/dummy/app/controllers/widgets_controller.rb
         
     | 
| 
       508 
     | 
    
         
            -
            - test/dummy/app/helpers/application_helper.rb
         
     | 
| 
       509 
503 
     | 
    
         
             
            - test/dummy/app/models/animal.rb
         
     | 
| 
       510 
504 
     | 
    
         
             
            - test/dummy/app/models/article.rb
         
     | 
| 
       511 
505 
     | 
    
         
             
            - test/dummy/app/models/authorship.rb
         
     | 
| 
         @@ -538,7 +532,6 @@ test_files: 
     | 
|
| 
       538 
532 
     | 
    
         
             
            - test/dummy/app/models/person.rb
         
     | 
| 
       539 
533 
     | 
    
         
             
            - test/dummy/app/models/post.rb
         
     | 
| 
       540 
534 
     | 
    
         
             
            - test/dummy/app/models/post_with_status.rb
         
     | 
| 
       541 
     | 
    
         
            -
            - test/dummy/app/models/protected_widget.rb
         
     | 
| 
       542 
535 
     | 
    
         
             
            - test/dummy/app/models/quotation.rb
         
     | 
| 
       543 
536 
     | 
    
         
             
            - test/dummy/app/models/section.rb
         
     | 
| 
       544 
537 
     | 
    
         
             
            - test/dummy/app/models/skipper.rb
         
     | 
| 
         @@ -555,7 +548,6 @@ test_files: 
     | 
|
| 
       555 
548 
     | 
    
         
             
            - test/dummy/app/versions/json_version.rb
         
     | 
| 
       556 
549 
     | 
    
         
             
            - test/dummy/app/versions/kitchen/banana_version.rb
         
     | 
| 
       557 
550 
     | 
    
         
             
            - test/dummy/app/versions/post_version.rb
         
     | 
| 
       558 
     | 
    
         
            -
            - test/dummy/app/views/layouts/application.html.erb
         
     | 
| 
       559 
551 
     | 
    
         
             
            - test/dummy/config.ru
         
     | 
| 
       560 
552 
     | 
    
         
             
            - test/dummy/config/application.rb
         
     | 
| 
       561 
553 
     | 
    
         
             
            - test/dummy/config/boot.rb
         
     | 
| 
         @@ -576,7 +568,6 @@ test_files: 
     | 
|
| 
       576 
568 
     | 
    
         
             
            - test/dummy/config/routes.rb
         
     | 
| 
       577 
569 
     | 
    
         
             
            - test/dummy/db/migrate/20110208155312_set_up_test_tables.rb
         
     | 
| 
       578 
570 
     | 
    
         
             
            - test/dummy/db/schema.rb
         
     | 
| 
       579 
     | 
    
         
            -
            - test/dummy/script/rails
         
     | 
| 
       580 
571 
     | 
    
         
             
            - test/functional/controller_test.rb
         
     | 
| 
       581 
572 
     | 
    
         
             
            - test/functional/enabled_for_controller_test.rb
         
     | 
| 
       582 
573 
     | 
    
         
             
            - test/functional/modular_sinatra_test.rb
         
     | 
| 
         @@ -588,7 +579,6 @@ test_files: 
     | 
|
| 
       588 
579 
     | 
    
         
             
            - test/unit/cleaner_test.rb
         
     | 
| 
       589 
580 
     | 
    
         
             
            - test/unit/inheritance_column_test.rb
         
     | 
| 
       590 
581 
     | 
    
         
             
            - test/unit/model_test.rb
         
     | 
| 
       591 
     | 
    
         
            -
            - test/unit/protected_attrs_test.rb
         
     | 
| 
       592 
582 
     | 
    
         
             
            - test/unit/serializer_test.rb
         
     | 
| 
       593 
583 
     | 
    
         
             
            - test/unit/serializers/json_test.rb
         
     | 
| 
       594 
584 
     | 
    
         
             
            - test/unit/serializers/mixin_json_test.rb
         
     | 
    
        data/test/dummy/script/rails
    DELETED
    
    | 
         @@ -1,8 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #!/usr/bin/env ruby
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            # This command will automatically be run when you run "rails" with Rails 3 gems
         
     | 
| 
       4 
     | 
    
         
            -
            # installed from the root of your application.
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            APP_PATH = File.expand_path("../../config/application", __FILE__)
         
     | 
| 
       7 
     | 
    
         
            -
            require File.expand_path("../../config/boot", __FILE__)
         
     | 
| 
       8 
     | 
    
         
            -
            require "rails/commands"
         
     | 
| 
         @@ -1,52 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require "test_helper"
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class ProtectedAttrsTest < ActiveSupport::TestCase
         
     | 
| 
       4 
     | 
    
         
            -
              subject { ProtectedWidget.new }
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              # These ActiveModel matchers (provided by shoulda-matchers) only work for
         
     | 
| 
       7 
     | 
    
         
            -
              # Rails 3.
         
     | 
| 
       8 
     | 
    
         
            -
              if ActiveRecord::VERSION::MAJOR < 4
         
     | 
| 
       9 
     | 
    
         
            -
                accessible_attrs = ProtectedWidget.accessible_attributes.to_a
         
     | 
| 
       10 
     | 
    
         
            -
                accessible_attrs.each do |attr_name|
         
     | 
| 
       11 
     | 
    
         
            -
                  should allow_mass_assignment_of(attr_name.to_sym)
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
                inaccessible = ProtectedWidget.
         
     | 
| 
       14 
     | 
    
         
            -
                  column_names.
         
     | 
| 
       15 
     | 
    
         
            -
                  reject { |column_name| accessible_attrs.include?(column_name) }
         
     | 
| 
       16 
     | 
    
         
            -
                inaccessible.each do |attr_name|
         
     | 
| 
       17 
     | 
    
         
            -
                  should_not allow_mass_assignment_of(attr_name.to_sym)
         
     | 
| 
       18 
     | 
    
         
            -
                end
         
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              context "A model with `attr_accessible` created" do
         
     | 
| 
       22 
     | 
    
         
            -
                setup do
         
     | 
| 
       23 
     | 
    
         
            -
                  @widget = ProtectedWidget.create! name: "Henry"
         
     | 
| 
       24 
     | 
    
         
            -
                  @initial_attributes = @widget.attributes
         
     | 
| 
       25 
     | 
    
         
            -
                end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                should "be `nil` in its previous version" do
         
     | 
| 
       28 
     | 
    
         
            -
                  assert_nil @widget.paper_trail.previous_version
         
     | 
| 
       29 
     | 
    
         
            -
                end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                context "which is then updated" do
         
     | 
| 
       32 
     | 
    
         
            -
                  setup do
         
     | 
| 
       33 
     | 
    
         
            -
                    @widget.assign_attributes(name: "Jeff", a_text: "Short statement")
         
     | 
| 
       34 
     | 
    
         
            -
                    @widget.an_integer = 42
         
     | 
| 
       35 
     | 
    
         
            -
                    @widget.save!
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                  should "not be `nil` in its previous version" do
         
     | 
| 
       39 
     | 
    
         
            -
                    assert_not_nil @widget.paper_trail.previous_version
         
     | 
| 
       40 
     | 
    
         
            -
                  end
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                  should "the previous version should contain right attributes" do
         
     | 
| 
       43 
     | 
    
         
            -
                    # For some reason this test seems to be broken in JRuby 1.9 mode in the
         
     | 
| 
       44 
     | 
    
         
            -
                    # test env even though it works in the console. WTF?
         
     | 
| 
       45 
     | 
    
         
            -
                    unless ActiveRecord::VERSION::MAJOR >= 4 && defined?(JRUBY_VERSION)
         
     | 
| 
       46 
     | 
    
         
            -
                      previous_attributes = @widget.paper_trail.previous_version.attributes
         
     | 
| 
       47 
     | 
    
         
            -
                      assert_attributes_equal previous_attributes, @initial_attributes
         
     | 
| 
       48 
     | 
    
         
            -
                    end
         
     | 
| 
       49 
     | 
    
         
            -
                  end
         
     | 
| 
       50 
     | 
    
         
            -
                end
         
     | 
| 
       51 
     | 
    
         
            -
              end
         
     | 
| 
       52 
     | 
    
         
            -
            end
         
     |