rails-settings-cached 2.9.3 → 2.9.5

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: 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.