rabarber 4.1.3 → 4.1.4

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: ed0e1d5cc00bc6f410b2a677afb591fa4bb1acd21a7674729edc91e7c5b72cc1
4
- data.tar.gz: 7dd9ded3179f7aef89f36a0983f28fe6f4695cd7e535cdeeba4d208053f8d53f
3
+ metadata.gz: 5152a05ff663a5216b2fc2f546bf3b111f3e78a4c44c0088e72f2f73ac89464f
4
+ data.tar.gz: f6f24ff379055cfd5f4f7e93377a548289fd8f7b30b2f06053fd958f6ab8e5a3
5
5
  SHA512:
6
- metadata.gz: 99920a8e65cd953f2ddac63083628680b92f89195a65759b64e25d5619099517ad332b8821d2c681a2c0503286617aff0a26f41d5f5f99623fc678a33a028c93
7
- data.tar.gz: ce9ddfa4d718ac7d2b2533c3c87ad9cc5d3658cb1b23aa4ae1f0e75fe544186a37fb30bbea97b14c0fc9623cdb94ef9bb41c75ae0ea6b27d5a6a72dd62250d17
6
+ metadata.gz: e31e2c7fa58d42096203d1f8027acea031a720fafe21fd44b179a8c2e66818686ebd55abf2ec0d3229c93fc7e04b514a68fa20feebef25b7e11048caac4e58e7
7
+ data.tar.gz: 6b7143de48cc95ead0caf5256c9e3d28a54a515f4ea50cf33fc87271d5d13071782fad1926dda698e7842047f7bbed4a2cfe8254be3390af0ab1fde2608a9b30
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## v4.1.4
2
+
3
+ ### Misc:
4
+
5
+ - Deprecated `must_have_roles` configuration option
6
+ - Optimized cache invalidation
7
+
1
8
  ## v4.1.3
2
9
 
3
10
  ### Bugs:
@@ -20,6 +20,7 @@ module Rabarber
20
20
  instance_variable_set(:"@#{method_name}", Rabarber::Input::Types::Boolean.new(
21
21
  value, Rabarber::ConfigurationError, "Configuration '#{method_name}' must be a Boolean"
22
22
  ).process)
23
+ ActiveSupport::Deprecation.new("5.0.0", "rabarber").warn("Rabarber’s ‘must_have_roles’ configuration option is deprecated and will be removed in the next major version!") if method_name == :must_have_roles
23
24
  end
24
25
  end
25
26
 
@@ -7,16 +7,16 @@ module Rabarber
7
7
  module Cache
8
8
  module_function
9
9
 
10
- def fetch(key, &)
10
+ def fetch(uid, &)
11
11
  return yield unless enabled?
12
12
 
13
- Rails.cache.fetch(prepare_key(key), expires_in: 1.hour, race_condition_ttl: 5.seconds, &)
13
+ Rails.cache.fetch(prepare_key(uid), expires_in: 1.hour, race_condition_ttl: 5.seconds, &)
14
14
  end
15
15
 
16
- def delete(*keys)
16
+ def delete(*uids)
17
17
  return unless enabled?
18
18
 
19
- Rails.cache.delete_multi(keys.map { prepare_key(_1) }) if keys.any?
19
+ Rails.cache.delete_multi(uids.map { prepare_key(_1) }) if uids.any?
20
20
  end
21
21
 
22
22
  def enabled?
@@ -27,8 +27,8 @@ module Rabarber
27
27
  Rails.cache.delete_matched(/^#{CACHE_PREFIX}/o)
28
28
  end
29
29
 
30
- def prepare_key(key)
31
- "#{CACHE_PREFIX}:#{Digest::SHA2.hexdigest(Marshal.dump(key))}"
30
+ def prepare_key(uid)
31
+ "#{CACHE_PREFIX}:#{Digest::SHA2.hexdigest(Marshal.dump(uid))}"
32
32
  end
33
33
 
34
34
  CACHE_PREFIX = "rabarber"
@@ -67,7 +67,9 @@ module Rabarber
67
67
  private
68
68
 
69
69
  def delete_roleables_cache(role, context:)
70
- Rabarber::Core::Cache.delete(*assigned_to_roleables(role).flat_map { [[_1, context], [_1, :all]] })
70
+ assigned_to_roleables(role).each_slice(1000) do |ids|
71
+ Rabarber::Core::Cache.delete(*ids.flat_map { [[_1, context], [_1, :all]] })
72
+ end
71
73
  end
72
74
 
73
75
  def assigned_to_roleables(role)
@@ -97,8 +99,6 @@ module Rabarber
97
99
  record
98
100
  end
99
101
 
100
- private
101
-
102
102
  def delete_assignments
103
103
  ActiveRecord::Base.connection.execute(
104
104
  ActiveRecord::Base.sanitize_sql(
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rabarber
4
- VERSION = "4.1.3"
4
+ VERSION = "4.1.4"
5
5
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabarber
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.3
4
+ version: 4.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - enjaku4
8
8
  - trafium
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2025-03-20 00:00:00.000000000 Z
12
+ date: 2025-03-22 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rails
@@ -30,6 +31,7 @@ dependencies:
30
31
  - - "<"
31
32
  - !ruby/object:Gem::Version
32
33
  version: '8.1'
34
+ description:
33
35
  email:
34
36
  - rabarber_gem@icloud.com
35
37
  executables: []
@@ -80,6 +82,7 @@ metadata:
80
82
  source_code_uri: https://github.com/enjaku4/rabarber
81
83
  changelog_uri: https://github.com/enjaku4/rabarber/blob/main/CHANGELOG.md
82
84
  rubygems_mfa_required: 'true'
85
+ post_install_message:
83
86
  rdoc_options: []
84
87
  require_paths:
85
88
  - lib
@@ -97,7 +100,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
100
  - !ruby/object:Gem::Version
98
101
  version: '0'
99
102
  requirements: []
100
- rubygems_version: 3.6.2
103
+ rubygems_version: 3.4.19
104
+ signing_key:
101
105
  specification_version: 4
102
106
  summary: Simple role-based authorization library for Ruby on Rails
103
107
  test_files: []