audited 5.3.2 → 5.4.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
  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