phlex-rails 2.0.0 → 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: 99afebaac03dab652e1ebfa7b1037d2fa650ac46af545ac97a96c2ff1fcf36d9
4
- data.tar.gz: a2fddfa82b2f9cdb3fcc4ee9c2e7f97e6925ee9a47ffe8eec3b5b40c1f81f127
3
+ metadata.gz: 3ad416c2e7183889248c117bc3b62834d28e5a05b152c4dc68a872eb7afe8cfc
4
+ data.tar.gz: 447e809016fd6108c002b1c220911e8053bc85df885a92aef12f471304e49678
5
5
  SHA512:
6
- metadata.gz: aa23e9efa3d071729eec9e6589971b5ade4644f13d98402b94f398cc045e9b6293c55069f605b7647b5b08ba05b9a44f3a7236530b0c8f3ddd618305cdc1f501
7
- data.tar.gz: 5715fed7d4983d3411bde34ebc35f35a3c99f1314efa348f547c945a557b26dfd6b682dd34e3098c634a34150ff9454e434c2bf041f2c45634493d4f90e76830
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,8 +121,12 @@ module Phlex::Rails::SGML
105
121
  context = { rails_view_context: view_context }
106
122
  end
107
123
 
124
+ fragments = if (request = context[:rails_view_context].request) && (fragment_header = request.headers["X-Fragments"])
125
+ fragment_header.split(",").map(&:strip).presence
126
+ end
127
+
108
128
  if erb
109
- call(context:) { |*args|
129
+ call(context:, fragments:) { |*args|
110
130
  if args.length == 1 && Phlex::SGML === args[0] && !erb.source_location&.[](0)&.end_with?(".rb")
111
131
  unbuffered = Phlex::Rails::Unbuffered.new(args[0])
112
132
  raw(view_context.capture(unbuffered, &erb))
@@ -115,7 +135,7 @@ module Phlex::Rails::SGML
115
135
  end
116
136
  }.html_safe
117
137
  else
118
- call(context:).html_safe
138
+ call(context:, fragments:).html_safe
119
139
  end
120
140
  end
121
141
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Phlex
4
4
  module Rails
5
- VERSION = "2.0.0"
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.0
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-14 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