rails-settings-cached 2.9.3 → 2.9.5

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: 56978bb6963c13b5f83ae09b460fbdc6cfe5841233bbfb7e54db4a18648a56f7
4
- data.tar.gz: 8269965e9356e03eeb50cc9f5a819b7a875cdac92911446841cea9f0776e5d24
3
+ metadata.gz: dc947f6d7c17fd74d160cedbbafe9b027a24fa4e56192ab4cf515f72ac3eb7b3
4
+ data.tar.gz: 2464010525a411701cad88349ff304ada0bf872b1cebdfff6627014ebfe971fe
5
5
  SHA512:
6
- metadata.gz: 5cce734046980fafc3a1c7678599220cb61ff7aad75115b1a61aa07517ec6d4abd7650d221deee0bfe65d465e218e82413556a6b6dab408f9e167cdb8ad037f9
7
- data.tar.gz: 8c2af6ec2dff0e1111c2b1972959396995456296ea2a3f307852cfa1ce3fdf63036bc9aeebf1c9edfcb74ce2f0cb17bf7b34ce257c632ea297253cd32e0266bc
6
+ metadata.gz: 6e8b7bdccafeffde0dbb610057b1dfd7c4b5b147663dea19880ad94b44186861efb1ec8b6321dc1aa0095938070522aa4bdf3d708db0eb1c74ec77505bbff8d0
7
+ data.tar.gz: 83dd5c6cf2faf96424b95dc9a6caaafb30c15f0eb05102eb7285b49cfc479423af3415cbdde3d6b6bb3f1342b437cd982b883572e9214eaa720267e83249fbdc
data/README.md CHANGED
@@ -465,6 +465,18 @@ app/views/admin/settings/show.html.erb
465
465
  <% end %>
466
466
  ```
467
467
 
468
+ ## Special Cache Storage
469
+
470
+ You can use `cache_store` to change cache storage, default is `Rails.cache`.
471
+
472
+ Add `config/initializers/rails_settings.rb`
473
+
474
+ ```rb
475
+ RailsSettings.configure do
476
+ self.cache_storage = ActiveSupport::Cache::RedisCacheStore.new(url: "redis://localhost:6379")
477
+ end
478
+ ```
479
+
468
480
  ## Scoped Settings
469
481
 
470
482
  > 🚨 BREAK CHANGES WARNING:
@@ -505,6 +517,6 @@ end
505
517
  - [texterify/texterify](https://github.com/texterify/texterify) - 2.x
506
518
  - [mastodon/mastodon](https://github.com/mastodon/mastodon) - 0.6.x
507
519
  - [helpyio/helpy](https://github.com/helpyio/helpy) - 0.5.x
508
- - [daqing/rabel](https://github.com/daqing/rabel) - 0.4.x
520
+ - [maybe-finance/maybe](https://github.com/maybe-finance/maybe) - 2.x
509
521
 
510
522
  And more than [1K repositories](https://github.com/huacnlee/rails-settings-cached/network/dependents) used.
@@ -1,16 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsSettings
4
- class ProtectedKeyError < RuntimeError
5
- def initialize(key)
6
- super("Can't use #{key} as setting key.")
7
- end
8
- end
9
-
10
4
  class Base < ActiveRecord::Base
11
5
  PROTECTED_KEYS = %w[var value]
12
6
  self.table_name = table_name_prefix + "settings"
13
7
 
8
+ after_commit :clear_cache, on: %i[create update destroy]
9
+
14
10
  # get the value field, YAML decoded
15
11
  def value
16
12
  # rubocop:disable Security/YAMLLoad
@@ -33,7 +29,7 @@ module RailsSettings
33
29
  class << self
34
30
  def clear_cache
35
31
  RequestCache.reset
36
- Rails.cache.delete(cache_key)
32
+ cache_storage.delete(cache_key)
37
33
  end
38
34
 
39
35
  def field(key, **opts)
@@ -127,13 +123,17 @@ module RailsSettings
127
123
  end
128
124
 
129
125
  def _all_settings
130
- RequestCache.all_settings ||= Rails.cache.fetch(cache_key, expires_in: 1.week) do
126
+ RequestCache.all_settings ||= cache_storage.fetch(cache_key, expires_in: 1.week) do
131
127
  vars = unscoped.select("var, value")
132
128
  result = {}
133
129
  vars.each { |record| result[record.var] = record.value }
134
130
  result.with_indifferent_access
135
131
  end
136
132
  end
133
+
134
+ def cache_storage
135
+ RailsSettings.config.cache_storage
136
+ end
137
137
  end
138
138
  end
139
139
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsSettings
4
+ class Configuration
5
+ # Caching storage backend.
6
+ # Default: `Rails.cache`
7
+ attr_accessor :cache_storage
8
+ end
9
+
10
+ class << self
11
+ def config
12
+ return @config if defined?(@config)
13
+
14
+ @config = Configuration.new
15
+ @config.cache_storage = Rails.cache
16
+ @config
17
+ end
18
+
19
+ def configure(&block)
20
+ config.instance_exec(&block)
21
+ end
22
+ end
23
+ end
@@ -2,10 +2,6 @@
2
2
 
3
3
  module RailsSettings
4
4
  class Railtie < Rails::Railtie
5
- initializer "rails_settings.active_record.initialization" do
6
- RailsSettings::Base.after_commit :clear_cache, on: %i[create update destroy]
7
- end
8
-
9
5
  initializer "rails_settings.configure_rails_initialization" do |app|
10
6
  app.middleware.use RailsSettings::Middleware
11
7
  end
@@ -3,7 +3,7 @@
3
3
  module RailsSettings
4
4
  class << self
5
5
  def version
6
- "2.9.3"
6
+ "2.9.5"
7
7
  end
8
8
  end
9
9
  end
@@ -9,13 +9,21 @@ require_relative "rails-settings/fields/hash"
9
9
  require_relative "rails-settings/fields/integer"
10
10
  require_relative "rails-settings/fields/string"
11
11
 
12
- require_relative "rails-settings/base"
12
+ require_relative "rails-settings/configuration"
13
13
  require_relative "rails-settings/request_cache"
14
14
  require_relative "rails-settings/middleware"
15
15
  require_relative "rails-settings/railtie"
16
16
  require_relative "rails-settings/version"
17
17
 
18
18
  module RailsSettings
19
+ class ProtectedKeyError < RuntimeError
20
+ def initialize(key)
21
+ super("Can't use #{key} as setting key.")
22
+ end
23
+ end
24
+
25
+ autoload :Base, "rails-settings/base"
26
+
19
27
  module Fields
20
28
  end
21
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-settings-cached
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.3
4
+ version: 2.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Lee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-03 00:00:00.000000000 Z
11
+ date: 2024-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -127,6 +127,7 @@ files:
127
127
  - lib/generators/settings/templates/model.rb
128
128
  - lib/rails-settings-cached.rb
129
129
  - lib/rails-settings/base.rb
130
+ - lib/rails-settings/configuration.rb
130
131
  - lib/rails-settings/fields/array.rb
131
132
  - lib/rails-settings/fields/base.rb
132
133
  - lib/rails-settings/fields/big_decimal.rb
@@ -158,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
159
  - !ruby/object:Gem::Version
159
160
  version: '0'
160
161
  requirements: []
161
- rubygems_version: 3.4.19
162
+ rubygems_version: 3.5.3
162
163
  signing_key:
163
164
  specification_version: 4
164
165
  summary: The best solution for store global settings in Rails applications.