audited 5.3.2 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c9441d78ecdc47f146411573dbbba291449a94d062e2e564be52ff58548a2c25
4
- data.tar.gz: e2843b1bfe94e4a19aa6666a98c01d23fd165240f96d2c602d5291383b68f4a1
3
+ metadata.gz: 276c472a6d93d971c65197a821d22f7488c6b7495a933428faece47530131e96
4
+ data.tar.gz: 6cb8e7d470900e358fe3a1e8382f5c55385bee8a6b69bad2bd59acb3ac6b2420
5
5
  SHA512:
6
- metadata.gz: fbee8a19b3da64248a2d2ea58bdac95f94431b4e57545ceae25897b50470a3adf7bc9b7497da58a7e85e466502d2baa3c0d9e9e96e070b2f48b8a0ebe506cd0d
7
- data.tar.gz: e0093f598ceec9caade9d14c9fdba938e8ba92b3355bc164ba9587b1863230681586071ac5864ede9aaf361be58bdad38e08742a9f06e1093e89422c0a04e4ea
6
+ metadata.gz: e47432c90d81c5b009a2fdab3b720891cb00166adb285e4682c926e1f362c92897bb7f986295e25478c2cce09b29e5a05c956dc43af45c7c9dec6ba4b3e24df4
7
+ data.tar.gz: 60d2cc638562195e03cfab4f7e7825f7f7c90039b8a0a2d3f6de13e3778f6a6a89cd46574a951bfc5961649ef0fee3272c09b70111de82d3164bb40caceb797d
@@ -18,6 +18,7 @@ jobs:
18
18
  - rails60
19
19
  - rails61
20
20
  - rails70
21
+ - rails71
21
22
  db: [POSTGRES, MYSQL, SQLITE]
22
23
  exclude:
23
24
  # MySQL has issues on Ruby 2.3
@@ -96,6 +97,16 @@ jobs:
96
97
  - appraisal: rails70
97
98
  ruby: 2.6
98
99
 
100
+ # Rails 7.1 supports Ruby 2.7+
101
+ - appraisal: rails71
102
+ ruby: 2.3
103
+ - appraisal: rails71
104
+ ruby: 2.4
105
+ - appraisal: rails71
106
+ ruby: 2.5
107
+ - appraisal: rails71
108
+ ruby: 2.6
109
+
99
110
  services:
100
111
  postgres:
101
112
  image: postgres
data/Appraisals CHANGED
@@ -7,6 +7,7 @@ appraise "rails50" do
7
7
  gem "pg", ">= 0.18", "< 2.0"
8
8
  gem "sqlite3", "~> 1.3.6"
9
9
  gem "psych", "~> 3.1"
10
+ gem "loofah", "2.20.0"
10
11
  end
11
12
 
12
13
  appraise "rails51" do
@@ -15,6 +16,7 @@ appraise "rails51" do
15
16
  gem "pg", ">= 0.18", "< 2.0"
16
17
  gem "sqlite3", "~> 1.3.6"
17
18
  gem "psych", "~> 3.1"
19
+ gem "loofah", "2.20.0"
18
20
  end
19
21
 
20
22
  appraise "rails52" do
@@ -23,6 +25,7 @@ appraise "rails52" do
23
25
  gem "pg", ">= 0.18", "< 2.0"
24
26
  gem "sqlite3", "~> 1.3.6"
25
27
  gem "psych", "~> 3.1"
28
+ gem "loofah", "2.20.0"
26
29
  end
27
30
 
28
31
  appraise "rails60" do
@@ -45,3 +48,10 @@ appraise "rails70" do
45
48
  gem "pg", ">= 1.1"
46
49
  gem "sqlite3", ">= 1.4"
47
50
  end
51
+
52
+ appraise "rails71" do
53
+ gem "rails", ">= 7.1.0.beta1", "< 7.2"
54
+ gem "mysql2", ">= 0.4.4"
55
+ gem "pg", ">= 1.1"
56
+ gem "sqlite3", ">= 1.4"
57
+ end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Audited ChangeLog
2
2
 
3
+ ## 5.4.0 (2023-09-30)
4
+
5
+ - Add Rails 7.1 support - @yuki24
6
+ [#686](https://github.com/collectiveidea/audited/pull/686)
7
+
8
+ ## 5.3.3 (2023-03-24)
9
+
10
+ - Use RequestStore instead of Thread.current for thread-safe requests - @tiagocassio
11
+ [#669](https://github.com/collectiveidea/audited/pull/669)
12
+ - Clean up Touch audits - @mcyoung, @akostadinov
13
+ [#668](https://github.com/collectiveidea/audited/pull/668)
14
+
3
15
  ## 5.3.2 (2023-02-22)
4
16
 
5
17
  - Touch audit bug fixes - @mcyoung
data/README.md CHANGED
@@ -37,7 +37,7 @@ Audited is currently ActiveRecord-only. In a previous life, Audited worked with
37
37
  Add the gem to your Gemfile:
38
38
 
39
39
  ```ruby
40
- gem "audited", "~> 5.0"
40
+ gem "audited"
41
41
  ```
42
42
 
43
43
  And if you're using ```require: false``` you must add initializers like this:
@@ -238,7 +238,7 @@ class ApplicationController < ActionController::Base
238
238
  if current_user
239
239
  current_user
240
240
  else
241
- 'Elon Musk'
241
+ 'Alexander Fleming'
242
242
  end
243
243
  end
244
244
  end
@@ -7,5 +7,6 @@ gem "mysql2", ">= 0.3.18", "< 0.6.0"
7
7
  gem "pg", ">= 0.18", "< 2.0"
8
8
  gem "sqlite3", "~> 1.3.6"
9
9
  gem "psych", "~> 3.1"
10
+ gem "loofah", "2.20.0"
10
11
 
11
12
  gemspec name: "audited", path: "../"
@@ -7,5 +7,6 @@ gem "mysql2", ">= 0.3.18", "< 0.6.0"
7
7
  gem "pg", ">= 0.18", "< 2.0"
8
8
  gem "sqlite3", "~> 1.3.6"
9
9
  gem "psych", "~> 3.1"
10
+ gem "loofah", "2.20.0"
10
11
 
11
12
  gemspec name: "audited", path: "../"
@@ -7,5 +7,6 @@ gem "mysql2", ">= 0.4.4", "< 0.6.0"
7
7
  gem "pg", ">= 0.18", "< 2.0"
8
8
  gem "sqlite3", "~> 1.3.6"
9
9
  gem "psych", "~> 3.1"
10
+ gem "loofah", "2.20.0"
10
11
 
11
12
  gemspec name: "audited", path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", ">= 7.1.0.beta1", "< 7.2"
6
+ gem "mysql2", ">= 0.4.4"
7
+ gem "pg", ">= 1.1"
8
+ gem "sqlite3", ">= 1.4"
9
+
10
+ gemspec name: "audited", path: "../"
data/lib/audited/audit.rb CHANGED
@@ -49,7 +49,11 @@ module Audited
49
49
  cattr_accessor :audited_class_names
50
50
  self.audited_class_names = Set.new
51
51
 
52
- serialize :audited_changes, YAMLIfTextColumnType
52
+ if Rails.version >= "7.1"
53
+ serialize :audited_changes, coder: YAMLIfTextColumnType
54
+ else
55
+ serialize :audited_changes, YAMLIfTextColumnType
56
+ end
53
57
 
54
58
  scope :ascending, -> { reorder(version: :asc) }
55
59
  scope :descending, -> { reorder(version: :desc) }
@@ -247,12 +247,10 @@ module Audited
247
247
  all_changes.except(*self.class.non_audited_columns)
248
248
  end
249
249
 
250
- if for_touch
250
+ if for_touch && (last_audit = audits.last&.audited_changes)
251
251
  filtered_changes.reject! do |k, v|
252
- next unless audits.present?
253
-
254
- audits.last.audited_changes[k].to_json == v.to_json ||
255
- audits.last.audited_changes[k].to_json == v[1].to_json
252
+ last_audit[k].to_json == v.to_json ||
253
+ last_audit[k].to_json == v[1].to_json
256
254
  end
257
255
  end
258
256
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Audited
4
- VERSION = "5.3.2"
4
+ VERSION = "5.4.0"
5
5
  end
data/lib/audited.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "active_record"
4
+ require "request_store"
4
5
 
5
6
  module Audited
6
7
  class << self
@@ -21,16 +22,11 @@ module Audited
21
22
 
22
23
  # remove audit_model in next major version it was only shortly present in 5.1.0
23
24
  alias_method :audit_model, :audit_class
24
- deprecate audit_model: "use Audited.audit_class instead of Audited.audit_model. This method will be removed."
25
+ deprecate audit_model: "use Audited.audit_class instead of Audited.audit_model. This method will be removed.",
26
+ deprecator: ActiveSupport::Deprecation.new('6.0.0', 'Audited')
25
27
 
26
28
  def store
27
- current_store_value = Thread.current.thread_variable_get(:audited_store)
28
-
29
- if current_store_value.nil?
30
- Thread.current.thread_variable_set(:audited_store, {})
31
- else
32
- current_store_value
33
- end
29
+ RequestStore.store[:audited_store] ||= {}
34
30
  end
35
31
 
36
32
  def config
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- SingleCov.covered! uncovered: 1 # Rails version check
3
+ SingleCov.covered! uncovered: 2 # Rails version check
4
4
 
5
5
  class CustomAudit < Audited::Audit
6
6
  def custom_method
data/spec/audited_spec.rb CHANGED
@@ -3,16 +3,12 @@ require "spec_helper"
3
3
  describe Audited do
4
4
  describe "#store" do
5
5
  describe "maintains state of store" do
6
- let(:current_user) { "current_user" }
6
+ let(:current_user) { RequestStore.store[:audited_store] }
7
7
  before { Audited.store[:current_user] = current_user }
8
8
 
9
- it "when executed without fibers" do
9
+ it "checks store is not nil" do
10
10
  expect(Audited.store[:current_user]).to eq(current_user)
11
11
  end
12
-
13
- it "when executed with Fibers" do
14
- Fiber.new { expect(Audited.store[:current_user]).to eq(current_user) }.resume
15
- end
16
12
  end
17
13
  end
18
14
  end
@@ -5,11 +5,34 @@ module RailsApp
5
5
  config.root = File.expand_path("../../", __FILE__)
6
6
  config.i18n.enforce_available_locales = true
7
7
 
8
- if !Rails.version.start_with?("5.0") && !Rails.version.start_with?("5.1") && config.active_record.respond_to?(:yaml_column_permitted_classes=)
8
+ if Rails.version.start_with?("7.1") && config.active_record.respond_to?(:yaml_column_permitted_classes=)
9
+ config.active_record.yaml_column_permitted_classes = [
10
+ String,
11
+ Symbol,
12
+ Integer,
13
+ NilClass,
14
+ Float,
15
+ Time,
16
+ Date,
17
+ FalseClass,
18
+ Hash,
19
+ Array,
20
+ DateTime,
21
+ TrueClass,
22
+ BigDecimal,
23
+ ActiveSupport::TimeWithZone,
24
+ ActiveSupport::TimeZone,
25
+ ActiveSupport::HashWithIndifferentAccess
26
+ ]
27
+ elsif !Rails.version.start_with?("5.0") && !Rails.version.start_with?("5.1") && config.active_record.respond_to?(:yaml_column_permitted_classes=)
9
28
  config.active_record.yaml_column_permitted_classes =
10
29
  %w[String Symbol Integer NilClass Float Time Date FalseClass Hash Array DateTime TrueClass BigDecimal
11
30
  ActiveSupport::TimeWithZone ActiveSupport::TimeZone ActiveSupport::HashWithIndifferentAccess]
12
31
  end
32
+
33
+ if Rails.version >= "7.1"
34
+ config.active_support.cache_format_version = 7.1
35
+ end
13
36
  end
14
37
  end
15
38
 
@@ -8,7 +8,12 @@ module Models
8
8
  attribute :non_column_attr if Rails.version >= "5.1"
9
9
  attr_protected :logins if respond_to?(:attr_protected)
10
10
  enum status: {active: 0, reliable: 1, banned: 2}
11
- serialize :phone_numbers, Array
11
+
12
+ if Rails.version >= "7.1"
13
+ serialize :phone_numbers, type: Array
14
+ else
15
+ serialize :phone_numbers, Array
16
+ end
12
17
 
13
18
  def name=(val)
14
19
  write_attribute(:name, CGI.escapeHTML(val))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: audited
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.3.2
4
+ version: 5.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Keepers
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2023-02-22 00:00:00.000000000 Z
16
+ date: 2023-09-30 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: activerecord
@@ -24,7 +24,7 @@ dependencies:
24
24
  version: '5.0'
25
25
  - - "<"
26
26
  - !ruby/object:Gem::Version
27
- version: '7.1'
27
+ version: '7.2'
28
28
  type: :runtime
29
29
  prerelease: false
30
30
  version_requirements: !ruby/object:Gem::Requirement
@@ -34,7 +34,21 @@ dependencies:
34
34
  version: '5.0'
35
35
  - - "<"
36
36
  - !ruby/object:Gem::Version
37
- version: '7.1'
37
+ version: '7.2'
38
+ - !ruby/object:Gem::Dependency
39
+ name: request_store
40
+ requirement: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - "~>"
43
+ - !ruby/object:Gem::Version
44
+ version: '1.2'
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - "~>"
50
+ - !ruby/object:Gem::Version
51
+ version: '1.2'
38
52
  - !ruby/object:Gem::Dependency
39
53
  name: appraisal
40
54
  requirement: !ruby/object:Gem::Requirement
@@ -182,6 +196,7 @@ files:
182
196
  - gemfiles/rails60.gemfile
183
197
  - gemfiles/rails61.gemfile
184
198
  - gemfiles/rails70.gemfile
199
+ - gemfiles/rails71.gemfile
185
200
  - lib/audited-rspec.rb
186
201
  - lib/audited.rb
187
202
  - lib/audited/audit.rb
@@ -252,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
267
  - !ruby/object:Gem::Version
253
268
  version: '0'
254
269
  requirements: []
255
- rubygems_version: 3.4.6
270
+ rubygems_version: 3.4.7
256
271
  signing_key:
257
272
  specification_version: 4
258
273
  summary: Log all changes to your models