view_component_reflex 3.1.14.pre3 → 3.1.14.pre7

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.
@@ -1,75 +1,75 @@
1
- # A redis based adapter for component_reflex
2
- #
3
- # ViewComponentReflex::Engine.configure do |config|
4
- # config.state_adapter = ViewComponentReflex::StateAdapter::Redis.new(
5
- # redis_opts: {
6
- # url: "redis://localhost:6379/1", driver: :hiredis
7
- # },
8
- # ttl: 3600)
9
- # end
10
-
11
- module ViewComponentReflex
12
- module StateAdapter
13
- class Redis < Base
14
- attr_reader :client, :ttl
15
-
16
- def initialize(redis_opts:, ttl: 3600)
17
- @client = ::Redis.new(redis_opts)
18
- @ttl = ttl
19
- end
20
-
21
- def state(request, key)
22
- cache_key = get_key(request, key)
23
- value = client.hgetall(cache_key)
24
-
25
- return {} if value.nil?
26
-
27
- value.map do |k, v|
28
- [k, Marshal.load(v)]
29
- end.to_h
30
- end
31
-
32
- def set_state(request, _, key, new_state)
33
- cache_key = get_key(request, key)
34
- save_to_redis(cache_key, new_state)
35
- end
36
-
37
- def store_state(request, key, new_state = {})
38
- cache_key = get_key(request, key)
39
- optimized_store_to_redis(cache_key, new_state, request)
40
- end
41
-
42
- def wrap_write_async
43
- client.pipelined do
44
- yield
45
- end
46
- end
47
-
48
- private
49
-
50
- # Reduce number of calls coming from #store_state to save Redis
51
- # when it's first rendered
52
- def optimized_store_to_redis(cache_key, new_state, request)
53
- request.env["CACHE_REDIS_REFLEX"] ||= []
54
- return if request.env["CACHE_REDIS_REFLEX"].include?(cache_key)
55
- request.env["CACHE_REDIS_REFLEX"].push(cache_key)
56
-
57
- save_to_redis(cache_key, new_state)
58
- end
59
-
60
- def save_to_redis(cache_key, new_state)
61
- new_state_json = new_state.map do |k, v|
62
- [k, Marshal.dump(v)]
63
- end
64
-
65
- client.hmset(cache_key, new_state_json.flatten)
66
- client.expire(cache_key, ttl)
67
- end
68
-
69
- def get_key(request, key)
70
- id = Redis.extract_id(request)
71
- "#{id}_#{key}_session_reflex_redis"
72
- end
73
- end
74
- end
75
- end
1
+ # A redis based adapter for component_reflex
2
+ #
3
+ # ViewComponentReflex::Engine.configure do |config|
4
+ # config.state_adapter = ViewComponentReflex::StateAdapter::Redis.new(
5
+ # redis_opts: {
6
+ # url: "redis://localhost:6379/1", driver: :hiredis
7
+ # },
8
+ # ttl: 3600)
9
+ # end
10
+
11
+ module ViewComponentReflex
12
+ module StateAdapter
13
+ class Redis < Base
14
+ attr_reader :client, :ttl
15
+
16
+ def initialize(redis_opts:, ttl: 3600)
17
+ @client = ::Redis.new(redis_opts)
18
+ @ttl = ttl
19
+ end
20
+
21
+ def state(request, key)
22
+ cache_key = get_key(request, key)
23
+ value = client.hgetall(cache_key)
24
+
25
+ return {} if value.nil?
26
+
27
+ value.map do |k, v|
28
+ [k, Marshal.load(v)]
29
+ end.to_h
30
+ end
31
+
32
+ def set_state(request, _, key, new_state)
33
+ cache_key = get_key(request, key)
34
+ save_to_redis(cache_key, new_state)
35
+ end
36
+
37
+ def store_state(request, key, new_state = {})
38
+ cache_key = get_key(request, key)
39
+ optimized_store_to_redis(cache_key, new_state, request)
40
+ end
41
+
42
+ def wrap_write_async
43
+ client.pipelined do
44
+ yield
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ # Reduce number of calls coming from #store_state to save Redis
51
+ # when it's first rendered
52
+ def optimized_store_to_redis(cache_key, new_state, request)
53
+ request.env["CACHE_REDIS_REFLEX"] ||= []
54
+ return if request.env["CACHE_REDIS_REFLEX"].include?(cache_key)
55
+ request.env["CACHE_REDIS_REFLEX"].push(cache_key)
56
+
57
+ save_to_redis(cache_key, new_state)
58
+ end
59
+
60
+ def save_to_redis(cache_key, new_state)
61
+ new_state_json = new_state.map do |k, v|
62
+ [k, Marshal.dump(v)]
63
+ end
64
+
65
+ client.hmset(cache_key, new_state_json.flatten)
66
+ client.expire(cache_key, ttl)
67
+ end
68
+
69
+ def get_key(request, key)
70
+ id = Redis.extract_id(request)
71
+ "#{id}_#{key}_session_reflex_redis"
72
+ end
73
+ end
74
+ end
75
+ end
@@ -1,28 +1,28 @@
1
- module ViewComponentReflex
2
- module StateAdapter
3
- class Session < Base
4
- def self.state(request, key)
5
- request.session[key] ||= {}
6
- end
7
-
8
- def self.set_state(request, controller, key, new_state)
9
- new_state.each do |k, v|
10
- state(request, key)[k] = v
11
- end
12
- store = request.session.instance_variable_get("@by")
13
- store.commit_session request, controller.response
14
- end
15
-
16
- def self.store_state(request, key, new_state = {})
17
- request.session[key] = {}
18
- new_state.each do |k, v|
19
- request.session[key][k] = v
20
- end
21
- end
22
-
23
- def self.wrap_write_async
24
- yield
25
- end
26
- end
27
- end
28
- end
1
+ module ViewComponentReflex
2
+ module StateAdapter
3
+ class Session < Base
4
+ def self.state(request, key)
5
+ request.session[key] ||= {}
6
+ end
7
+
8
+ def self.set_state(request, controller, key, new_state)
9
+ new_state.each do |k, v|
10
+ state(request, key)[k] = v
11
+ end
12
+ store = request.session.instance_variable_get("@by")
13
+ store.commit_session request, controller.response
14
+ end
15
+
16
+ def self.store_state(request, key, new_state = {})
17
+ request.session[key] = {}
18
+ new_state.each do |k, v|
19
+ request.session[key][k] = v
20
+ end
21
+ end
22
+
23
+ def self.wrap_write_async
24
+ yield
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
- module ViewComponentReflex
2
- VERSION = '3.1.14.pre3'
3
- end
1
+ module ViewComponentReflex
2
+ VERSION = '3.1.14.pre7'
3
+ end
@@ -1,12 +1,12 @@
1
- require "stimulus_reflex"
2
- require 'view_component_reflex/reflex_factory'
3
- require "view_component_reflex/state_adapter/base"
4
- require "view_component_reflex/state_adapter/session"
5
- require "view_component_reflex/state_adapter/memory"
6
- require "view_component_reflex/state_adapter/redis"
7
- require "view_component_reflex/reflex"
8
- require "view_component_reflex/engine"
9
-
10
- module ViewComponentReflex
11
- # Your code goes here...
12
- end
1
+ require "stimulus_reflex"
2
+ require 'view_component_reflex/reflex_factory'
3
+ require "view_component_reflex/state_adapter/base"
4
+ require "view_component_reflex/state_adapter/session"
5
+ require "view_component_reflex/state_adapter/memory"
6
+ require "view_component_reflex/state_adapter/redis"
7
+ require "view_component_reflex/reflex"
8
+ require "view_component_reflex/engine"
9
+
10
+ module ViewComponentReflex
11
+ # Your code goes here...
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: view_component_reflex
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.14.pre3
4
+ version: 3.1.14.pre7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua LeBlanc
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-11 00:00:00.000000000 Z
11
+ date: 2021-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -97,7 +97,7 @@ licenses:
97
97
  - MIT
98
98
  metadata:
99
99
  allowed_push_host: https://rubygems.org
100
- post_install_message:
100
+ post_install_message:
101
101
  rdoc_options: []
102
102
  require_paths:
103
103
  - lib
@@ -112,8 +112,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  - !ruby/object:Gem::Version
113
113
  version: 1.3.1
114
114
  requirements: []
115
- rubygems_version: 3.1.4
116
- signing_key:
115
+ rubygems_version: 3.2.9
116
+ signing_key:
117
117
  specification_version: 4
118
118
  summary: Allow stimulus reflexes in a view component
119
119
  test_files: []