react-rails 3.2.1 → 3.3.1

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.
@@ -66,7 +66,7 @@ module React
66
66
  ActionController::Renderers.add :component do |component_name, options|
67
67
  renderer = ::React::Rails::ControllerRenderer.new(controller: self)
68
68
  html = renderer.call(component_name, options)
69
- render_options = options.merge(inline: html)
69
+ render_options = Railtie.component_render_options(options, html)
70
70
  render(render_options)
71
71
  end
72
72
  end
@@ -76,10 +76,8 @@ module React
76
76
  variant: app.config.react.variant
77
77
  })
78
78
 
79
- sprockets_env = app.assets || app.config.try(:assets) # sprockets-rails 3.x attaches this at a different config
80
- unless sprockets_env.nil?
81
- sprockets_env.version = [sprockets_env.version, "react-#{asset_variant.react_build}"].compact.join("-")
82
- end
79
+ assets = app.assets || app.config.try(:assets) # sprockets-rails 3.x attaches this at a different config
80
+ Railtie.append_react_build_to_assets_version!(assets, asset_variant.react_build)
83
81
  end
84
82
 
85
83
  initializer "react_rails.set_variant", after: :engines_blank_point, group: :all do |app|
@@ -114,6 +112,37 @@ module React
114
112
  React::JSX::SprocketsStrategy.attach_with_strategy(sprockets_env, app.config.react.sprockets_strategy)
115
113
  end
116
114
  end
115
+
116
+ # :nodoc:
117
+ def self.append_react_build_to_assets_version!(assets, react_build)
118
+ versioned_assets = versioned_assets_for(assets)
119
+ return if versioned_assets.nil?
120
+
121
+ versioned_assets.version = [versioned_assets.version, "react-#{react_build}"].compact.join("-")
122
+ end
123
+
124
+ # :nodoc:
125
+ def self.component_render_options(options, html)
126
+ render_options = options.merge(inline: html)
127
+ return render_options if render_options.key?(:layout)
128
+
129
+ render_options.merge(layout: true)
130
+ end
131
+
132
+ def self.versioned_assets_for(assets)
133
+ return assets if versioned_assets?(assets)
134
+
135
+ config = assets.config if assets.respond_to?(:config)
136
+ return config if versioned_assets?(config)
137
+
138
+ nil
139
+ end
140
+
141
+ def self.versioned_assets?(assets)
142
+ assets.respond_to?(:version) && assets.respond_to?(:version=)
143
+ end
144
+
145
+ private_class_method :versioned_assets_for, :versioned_assets?
117
146
  end
118
147
  end
119
148
  end
@@ -4,6 +4,6 @@ module React
4
4
  module Rails
5
5
  # If you change this, make sure to update VERSIONS.md
6
6
  # and republish the UJS by updating package.json and `bundle exec rake ujs:publish`
7
- VERSION = "3.2.1"
7
+ VERSION = "3.3.1"
8
8
  end
9
9
  end
@@ -4,6 +4,7 @@ require "react/server_rendering/environment_container"
4
4
  require "react/server_rendering/manifest_container"
5
5
  require "react/server_rendering/yaml_manifest_container"
6
6
  require "react/server_rendering/separate_server_bundle_container"
7
+ require "react/server_rendering/propshaft_container"
7
8
 
8
9
  module React
9
10
  module ServerRendering
@@ -103,6 +104,7 @@ module React
103
104
  def asset_container_class
104
105
  return self.class.asset_container_class if self.class.asset_container_class.present?
105
106
  return SeparateServerBundleContainer if SeparateServerBundleContainer.compatible?
107
+ return PropshaftContainer if PropshaftContainer.compatible?
106
108
 
107
109
  return EnvironmentContainer unless assets_precompiled?
108
110
 
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module React
4
+ module ServerRendering
5
+ # Return asset contents by getting them from a Propshaft::Assembly instance.
6
+ class PropshaftContainer
7
+ class << self
8
+ def assembly
9
+ ::Rails.application.assets
10
+ end
11
+
12
+ def compatible?
13
+ !!defined?(Propshaft) && assembly.is_a?(Propshaft::Assembly)
14
+ end
15
+ end
16
+
17
+ def find_asset(path)
18
+ self.class.assembly.load_path.find(path).content.force_encoding("utf-8")
19
+ end
20
+ end
21
+ end
22
+ end
@@ -16,7 +16,7 @@ module React
16
16
  # @return [void]
17
17
  def self.reset_pool
18
18
  options = { size: pool_size, timeout: pool_timeout }
19
- @pool = ConnectionPool.new(options) { renderer.new(renderer_options) }
19
+ @pool = ConnectionPool.new(**options) { renderer.new(renderer_options) }
20
20
  end
21
21
 
22
22
  # Check a renderer out of the pool and use it to render the component.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul O’Shannessy
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2024-05-17 00:00:00.000000000 Z
14
+ date: 2026-05-16 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: appraisal
@@ -199,16 +199,16 @@ dependencies:
199
199
  name: pry-byebug
200
200
  requirement: !ruby/object:Gem::Requirement
201
201
  requirements:
202
- - - ">="
202
+ - - "~>"
203
203
  - !ruby/object:Gem::Version
204
- version: '0'
204
+ version: 3.8.0
205
205
  type: :development
206
206
  prerelease: false
207
207
  version_requirements: !ruby/object:Gem::Requirement
208
208
  requirements:
209
- - - ">="
209
+ - - "~>"
210
210
  - !ruby/object:Gem::Version
211
- version: '0'
211
+ version: 3.8.0
212
212
  - !ruby/object:Gem::Dependency
213
213
  name: package_json
214
214
  requirement: !ruby/object:Gem::Requirement
@@ -397,6 +397,7 @@ files:
397
397
  - lib/react/server_rendering/environment_container.rb
398
398
  - lib/react/server_rendering/exec_js_renderer.rb
399
399
  - lib/react/server_rendering/manifest_container.rb
400
+ - lib/react/server_rendering/propshaft_container.rb
400
401
  - lib/react/server_rendering/separate_server_bundle_container.rb
401
402
  - lib/react/server_rendering/yaml_manifest_container.rb
402
403
  homepage: https://github.com/reactjs/react-rails
@@ -418,7 +419,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
418
419
  - !ruby/object:Gem::Version
419
420
  version: '0'
420
421
  requirements: []
421
- rubygems_version: 3.2.32
422
+ rubygems_version: 3.4.19
422
423
  signing_key:
423
424
  specification_version: 4
424
425
  summary: React integration for Ruby on Rails