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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +35 -6
- data/README.md +17 -2
- data/lib/assets/javascripts/react_ujs.js +1 -1
- data/lib/assets/react-source/development/react-server.js +240 -178
- data/lib/assets/react-source/development/react.js +74 -68
- data/lib/assets/react-source/production/react-server.js +1 -1
- data/lib/assets/react-source/production/react.js +1 -1
- data/lib/react/rails/railtie.rb +34 -5
- data/lib/react/rails/version.rb +1 -1
- data/lib/react/server_rendering/bundle_renderer.rb +2 -0
- data/lib/react/server_rendering/propshaft_container.rb +22 -0
- data/lib/react/server_rendering.rb +1 -1
- metadata +8 -7
data/lib/react/rails/railtie.rb
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
80
|
-
|
|
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
|
data/lib/react/rails/version.rb
CHANGED
|
@@ -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.
|
|
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:
|
|
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:
|
|
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:
|
|
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.
|
|
422
|
+
rubygems_version: 3.4.19
|
|
422
423
|
signing_key:
|
|
423
424
|
specification_version: 4
|
|
424
425
|
summary: React integration for Ruby on Rails
|