phlex-rails 2.0.1 → 2.0.2

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: 9132f7408f8894ff8986d6cd0ee5bcb3ad4b2b9b31a76d662ae2bb8a94795857
4
- data.tar.gz: 37a11261dfec101579e1b68478895d37b1e449c560f2063b7d18246955374a13
3
+ metadata.gz: 3ad416c2e7183889248c117bc3b62834d28e5a05b152c4dc68a872eb7afe8cfc
4
+ data.tar.gz: 447e809016fd6108c002b1c220911e8053bc85df885a92aef12f471304e49678
5
5
  SHA512:
6
- metadata.gz: 0aaa46676771388eb1da90da857964ab96efa2ed6569318107707bf900ac721bb2f1fac69b7c7bb54b6267f0e280d24beb1baa2237477e2396674fb164d21c5c
7
- data.tar.gz: 15e57ba0d534f7915b4f097970db93e512791b85ae6d061c4bb7f7a4f235dba7f1564fe0e5364d25fa3d8920df2125eb0d700257bf9577b93a8654213edd1681
6
+ metadata.gz: 815e12b7055db5d322e3a060b00faa3fb727cb2f337eb3a8881c3c2a9f46d075ccacb613772fe90fce70c1dec521be872d1bf49b2632f104d84d154ffbec69d1
7
+ data.tar.gz: bb9912efb00c12e2d8fa13aa414e62af1b011e44a1b29984c0bcdea462bdd7095d0c0cc69fb1ce9f3f9923fb0dd522ae2de1eaedcffbbdfeecb3f31e2d2374e6
@@ -13,14 +13,28 @@ module Phlex::Rails::SGML
13
13
  end
14
14
  end
15
15
 
16
- def method_missing(name, *args, **kwargs, &block)
17
- return super unless view_context.respond_to?(name)
16
+ def method_missing(name, ...)
17
+ super
18
+ rescue NoMethodError => e
19
+ if rendering? && view_context.respond_to?(name)
20
+ const_name = name.to_s.gsub("?", "")
18
21
 
19
- const_name = name.to_s.gsub("?", "")
20
- module_name = Phlex::Rails::Helpers.constants.find { |mod| mod.to_s.underscore.gsub("domid", "dom_id") == const_name }
21
- return super unless module_name
22
+ module_name = Phlex::Rails::Helpers.constants.find do |mod|
23
+ mod.name.underscore.gsub("domid", "dom_id") == const_name
24
+ end
22
25
 
23
- raise NoMethodError.new("Try including `Phlex::Rails::Helpers::#{module_name}` in #{self.class.name}.")
26
+ # If we're missing a helper module, raise a NoMethodError with a helpful message,
27
+ # otherwise re-raise the original error.
28
+ if module_name
29
+ raise NoMethodError.new(<<~MESSAGE)
30
+ Try including `Phlex::Rails::Helpers::#{module_name}` in #{self.class.name}.
31
+ MESSAGE
32
+ else
33
+ raise e
34
+ end
35
+ else
36
+ raise e
37
+ end
24
38
  end
25
39
 
26
40
  def partial(*, **, &block)
@@ -51,11 +65,13 @@ module Phlex::Rails::SGML
51
65
  end
52
66
 
53
67
  def view_context
54
- context[:rails_view_context] || (
55
- raise Phlex::Rails::HelpersCalledBeforeRenderError.new(
56
- "Do not use rails helpers until after the view has been rendered."
57
- )
58
- )
68
+ if rendering?
69
+ context[:rails_view_context]
70
+ else
71
+ raise Phlex::Rails::HelpersCalledBeforeRenderError.new(<<~MESSAGE)
72
+ You can’t use Rails view helpers until after the component has started rendering.
73
+ MESSAGE
74
+ end
59
75
  end
60
76
 
61
77
  # If we’re rendered from view_component, we need to capture on the view_component context.
@@ -105,7 +121,9 @@ module Phlex::Rails::SGML
105
121
  context = { rails_view_context: view_context }
106
122
  end
107
123
 
108
- fragments = context[:rails_view_context].request.headers.fetch("X-Fragments", "").split(",").map(&:strip).presence
124
+ fragments = if (request = context[:rails_view_context].request) && (fragment_header = request.headers["X-Fragments"])
125
+ fragment_header.split(",").map(&:strip).presence
126
+ end
109
127
 
110
128
  if erb
111
129
  call(context:, fragments:) { |*args|
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Phlex
4
4
  module Rails
5
- VERSION = "2.0.1"
5
+ VERSION = "2.0.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlex-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Drapper
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-02-15 00:00:00.000000000 Z
12
+ date: 2025-02-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: phlex
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 2.0.0
20
+ version: 2.0.2
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 2.0.0
27
+ version: 2.0.2
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: railties
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -306,7 +306,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
306
306
  - !ruby/object:Gem::Version
307
307
  version: '0'
308
308
  requirements: []
309
- rubygems_version: 3.5.23
309
+ rubygems_version: 3.5.18
310
310
  signing_key:
311
311
  specification_version: 4
312
312
  summary: A Phlex adapter for Rails