view_component_reflex 3.1.1 → 3.1.6

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,18 +1,18 @@
1
- module ViewComponentReflex
2
- module StateAdapter
3
- class Base
4
-
5
- private
6
-
7
- def self.extract_id(request)
8
- session = request&.session
9
- if session.respond_to? :id
10
- session.id.to_s
11
- else
12
- nil
13
- end
14
- end
15
-
16
- end
17
- end
18
- end
1
+ module ViewComponentReflex
2
+ module StateAdapter
3
+ class Base
4
+
5
+ private
6
+
7
+ def self.extract_id(request)
8
+ session = request&.session
9
+ if session.respond_to? :id
10
+ session.id.to_s
11
+ else
12
+ nil
13
+ end
14
+ end
15
+
16
+ end
17
+ end
18
+ end
@@ -1,33 +1,33 @@
1
- VIEW_COMPONENT_REFLEX_MEMORY_STATE = {}
2
- module ViewComponentReflex
3
- module StateAdapter
4
- class Memory < Base
5
- def self.state(request, key)
6
- id = extract_id(request)
7
-
8
- VIEW_COMPONENT_REFLEX_MEMORY_STATE[id] ||= {}
9
- VIEW_COMPONENT_REFLEX_MEMORY_STATE[id][key] ||= {}
10
- end
11
-
12
- def self.set_state(request, _, key, new_state)
13
- new_state.each do |k, v|
14
- state(request, key)[k] = v
15
- end
16
- end
17
-
18
- def self.store_state(request, key, new_state = {})
19
- id = extract_id(request)
20
-
21
- VIEW_COMPONENT_REFLEX_MEMORY_STATE[id] ||= {}
22
- VIEW_COMPONENT_REFLEX_MEMORY_STATE[id][key] = {}
23
- new_state.each do |k, v|
24
- VIEW_COMPONENT_REFLEX_MEMORY_STATE[id][key][k] = v
25
- end
26
- end
27
-
28
- def self.wrap_write_async
29
- yield
30
- end
31
- end
32
- end
33
- end
1
+ VIEW_COMPONENT_REFLEX_MEMORY_STATE = {}
2
+ module ViewComponentReflex
3
+ module StateAdapter
4
+ class Memory < Base
5
+ def self.state(request, key)
6
+ id = extract_id(request)
7
+
8
+ VIEW_COMPONENT_REFLEX_MEMORY_STATE[id] ||= {}
9
+ VIEW_COMPONENT_REFLEX_MEMORY_STATE[id][key] ||= {}
10
+ end
11
+
12
+ def self.set_state(request, _, key, new_state)
13
+ new_state.each do |k, v|
14
+ state(request, key)[k] = v
15
+ end
16
+ end
17
+
18
+ def self.store_state(request, key, new_state = {})
19
+ id = extract_id(request)
20
+
21
+ VIEW_COMPONENT_REFLEX_MEMORY_STATE[id] ||= {}
22
+ VIEW_COMPONENT_REFLEX_MEMORY_STATE[id][key] = {}
23
+ new_state.each do |k, v|
24
+ VIEW_COMPONENT_REFLEX_MEMORY_STATE[id][key][k] = v
25
+ end
26
+ end
27
+
28
+ def self.wrap_write_async
29
+ yield
30
+ end
31
+ end
32
+ end
33
+ end
@@ -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.1'
3
- end
1
+ module ViewComponentReflex
2
+ VERSION = '3.1.6'
3
+ 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.1
4
+ version: 3.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua LeBlanc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-07 00:00:00.000000000 Z
11
+ date: 2021-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 3.4.0
39
+ version: 3.4.1
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 3.4.0
46
+ version: 3.4.1
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: view_component
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -85,6 +85,7 @@ files:
85
85
  - app/components/view_component_reflex/component.rb
86
86
  - lib/view_component_reflex.rb
87
87
  - lib/view_component_reflex/engine.rb
88
+ - lib/view_component_reflex/null_broadcaster.rb
88
89
  - lib/view_component_reflex/reflex.rb
89
90
  - lib/view_component_reflex/reflex_factory.rb
90
91
  - lib/view_component_reflex/state_adapter/base.rb
@@ -112,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
113
  - !ruby/object:Gem::Version
113
114
  version: '0'
114
115
  requirements: []
115
- rubygems_version: 3.0.3
116
+ rubygems_version: 3.1.4
116
117
  signing_key:
117
118
  specification_version: 4
118
119
  summary: Allow stimulus reflexes in a view component