universal_renderer 0.4.2 → 0.4.3
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/README.md +13 -28
- data/lib/universal_renderer/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 551cd8e80275fa95b8c3f66672f4a4262a25f5f0038fe4c45375b9bc852fbabe
|
4
|
+
data.tar.gz: bad53819a7dfdbdb10fbe1d3317e3877fcb05dc4fc2663ed5954e4975d3bd5b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0eecc4335c6c69929077c77db58fd22e7dbc9db04eeb78efa16826e2b8a35425c270990c96141adf842db4a5d725eacda04f277edbab60f7df41b0580a9b1252
|
7
|
+
data.tar.gz: 4df736ee5b781353f2543f00badc3efbdecd1eebb66a2e6405ff8136599a0f1136ef2fc52dc2d27732cbf7c84bf15a3eb904d3303e7367e1b7c8923fdf0d176c
|
data/README.md
CHANGED
@@ -12,22 +12,12 @@ UniversalRenderer helps you forward rendering requests to external SSR services,
|
|
12
12
|
|
13
13
|
## Features
|
14
14
|
|
15
|
-
- **
|
15
|
+
- **Streaming SSR** support
|
16
16
|
- **Configurable SSR server endpoint** and timeouts
|
17
17
|
- **Simple API** for passing data between Rails and your SSR service
|
18
18
|
- **Automatic fallback** to client-side rendering if SSR fails
|
19
19
|
- **View helpers** for easy integration into your layouts
|
20
20
|
|
21
|
-
## Requirements
|
22
|
-
|
23
|
-
> **Heads-up ⚠️** The JavaScript side of UniversalRenderer is **Bun-native**.
|
24
|
-
>
|
25
|
-
> • You **must** run the SSR server with **Bun ≥ 1.2**.
|
26
|
-
>
|
27
|
-
> • The exported helpers call Bun's built-in HTTP router and `Response` implementation; they **will not boot under Node, Deno, or Cloudflare Workers**.
|
28
|
-
>
|
29
|
-
> • The Ruby gem is runtime-agnostic and continues to work on every platform – only the SSR service requires Bun.
|
30
|
-
|
31
21
|
## Installation
|
32
22
|
|
33
23
|
1. Add to your Gemfile:
|
@@ -93,13 +83,13 @@ end
|
|
93
83
|
```erb
|
94
84
|
<%# "ssr/index" %>
|
95
85
|
|
96
|
-
<%# Inject SSR snippets using the provided helpers
|
97
|
-
|
98
|
-
|
86
|
+
<%# Inject SSR snippets using the provided helpers %>
|
87
|
+
<%# When streaming is enabled these render HTML placeholders %>
|
88
|
+
<%# Otherwise they output the sanitised HTML returned by the SSR service %>
|
99
89
|
|
100
|
-
|
90
|
+
<%= content_for :head do %>
|
101
91
|
<%= ssr_head %>
|
102
|
-
|
92
|
+
<% end %>
|
103
93
|
|
104
94
|
<div id="root">
|
105
95
|
<%= ssr_body %>
|
@@ -145,7 +135,7 @@ To set up the SSR server for your Rails application:
|
|
145
135
|
query_data.forEach(({ key, data }) => queryClient.setQueryData(key, data));
|
146
136
|
const state = dehydrate(queryClient);
|
147
137
|
|
148
|
-
const
|
138
|
+
const app = sheet.collectStyles(
|
149
139
|
<HelmetProvider context={helmetContext}>
|
150
140
|
<Metadata url={url} />
|
151
141
|
<QueryClientProvider client={queryClient}>
|
@@ -157,7 +147,7 @@ To set up the SSR server for your Rails application:
|
|
157
147
|
</HelmetProvider>,
|
158
148
|
);
|
159
149
|
|
160
|
-
return {
|
150
|
+
return { app, helmetContext, sheet, queryClient };
|
161
151
|
}
|
162
152
|
```
|
163
153
|
|
@@ -198,18 +188,10 @@ To set up the SSR server for your Rails application:
|
|
198
188
|
import { head, transform } from "@/ssr/utils";
|
199
189
|
import { renderToString } from "react-dom/server.node";
|
200
190
|
import { createServer } from "universal-renderer";
|
201
|
-
import { createServer as createViteServer } from "vite";
|
202
|
-
|
203
|
-
const vite = await createViteServer({
|
204
|
-
server: { middlewareMode: true },
|
205
|
-
appType: "custom",
|
206
|
-
});
|
207
|
-
|
208
|
-
await createServer({
|
209
|
-
port: 3001,
|
210
|
-
middleware: vite.middlewares,
|
211
191
|
|
192
|
+
const app = await createServer({
|
212
193
|
setup: (await import("@/ssr/setup")).default,
|
194
|
+
|
213
195
|
render: ({ app, helmet, sheet }) => {
|
214
196
|
const root = renderToString(app);
|
215
197
|
const styles = sheet.getStyleTags();
|
@@ -218,11 +200,14 @@ To set up the SSR server for your Rails application:
|
|
218
200
|
body: `${root}\n${styles}`,
|
219
201
|
};
|
220
202
|
},
|
203
|
+
|
221
204
|
cleanup: ({ sheet, queryClient }) => {
|
222
205
|
sheet?.seal();
|
223
206
|
queryClient?.clear();
|
224
207
|
},
|
225
208
|
});
|
209
|
+
|
210
|
+
app.listen(3001);
|
226
211
|
```
|
227
212
|
|
228
213
|
5. Build the SSR bundle:
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: universal_renderer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thaske
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: loofah
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '7.1'
|
33
33
|
- - "<"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
35
|
+
version: '9.0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
version: '7.1'
|
43
43
|
- - "<"
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: '
|
45
|
+
version: '9.0'
|
46
46
|
description: Provides helper methods and configuration to forward rendering requests
|
47
47
|
from a Rails app to an external SSR server and return the response.
|
48
48
|
email:
|
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: '0'
|
95
95
|
requirements: []
|
96
|
-
rubygems_version: 3.6.
|
96
|
+
rubygems_version: 3.6.9
|
97
97
|
specification_version: 4
|
98
98
|
summary: Facilitates Server-Side Rendering (SSR) in Rails applications.
|
99
99
|
test_files: []
|