diff --git a/docs/docs-beta/docs/dagster-plus/deployment/deployment-types/serverless/runtime-environment.md b/docs/docs-beta/docs/dagster-plus/deployment/deployment-types/serverless/runtime-environment.md
index ae13107a69f9b..00d2ba5c1e50a 100644
--- a/docs/docs-beta/docs/dagster-plus/deployment/deployment-types/serverless/runtime-environment.md
+++ b/docs/docs-beta/docs/dagster-plus/deployment/deployment-types/serverless/runtime-environment.md
@@ -17,7 +17,7 @@ By default, Dagster+ Serverless will package your code as PEX files and deploys
You can add dependencies by including the corresponding Python libraries in your Dagster project's `setup.py` file. These should follow [PEP 508](https://peps.python.org/pep-0508/).
-
+
You can also use a tarball to install a dependency, such as if `pip` is unable to resolve a package using `dependency_links`. For example, `soda` and `soda-snowflake` provide tarballs that you can include in the `install_requires` section:
@@ -48,18 +48,18 @@ The default Python version for Dagster+ Serverless is Python 3.9. Python version
In your `.github/workflows/deploy.yml` file, update the `PYTHON_VERSION` environment variable with your desired Python version:
-
+
1. Open your `.gitlab-ci.yml` file. If your `.gitlab-ci.yml` contains an `include` with a link to a Dagster provided CI/CD template:
-
+
Follow the link and replace the contents of your `.gitlab-ci.yml` with the YAML document at the link address. Otherwise, continue to the next step.
3. Update the `PYTHON_VERSION` environment variable with your desired Python version
-
+
@@ -101,7 +101,7 @@ Setting a custom base image isn't supported for GitLab CI/CD workflows out of th
In your `.github/workflows/deploy.yml` file, add the `SERVERLESS_BASE_IMAGE_TAG` environment variable and set it to the tag printed out in the previous step:
-
+
@@ -132,7 +132,7 @@ To add data files to your deployment, use the [Data Files Support](https://setup
```
If you want to include the data folder, modify your `setup.py` to add the `package_data` line:
-
+
## Disable PEX deploys
@@ -141,18 +141,18 @@ You have the option to disable PEX-based deploys and deploy using a Docker image
In your `.github/workflows/deploy.yml` file, update the `ENABLE_FAST_DEPLOYS` environment variable to `false`:
-
+
1. Open your `.gitlab-ci.yml` file. If your `.gitlab-ci.yml` contains an `include` with a link to a Dagster provided CI/CD template:
-
+
Follow the link and replace the contents of your `.gitlab-ci.yml` with the YAML document at the link address. Otherwise, continue to the next step.
3. Update the `DISABLE_FAST_DEPLOYS` variable to `true`
-
+
@@ -186,7 +186,7 @@ Setting a custom base image isn't supported for GitLab CI/CD workflows out of th
In your `.github/workflows/deploy.yml` file, add the `SERVERLESS_BASE_IMAGE_TAG` environment variable and set it to the tag printed out in the previous step:
-
+
diff --git a/docs/docs-beta/src/components/CodeExample.tsx b/docs/docs-beta/src/components/CodeExample.tsx
index 1ac75e331960e..8c7c944b6af2e 100644
--- a/docs/docs-beta/src/components/CodeExample.tsx
+++ b/docs/docs-beta/src/components/CodeExample.tsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, {Suspense} from 'react';
import CodeBlock from '@theme/CodeBlock';
interface CodeExampleProps {
@@ -10,7 +10,6 @@ interface CodeExampleProps {
pathPrefix?: string;
}
-
/**
* Removes content below the `if __name__` block for the given `lines`.
*/
@@ -28,7 +27,39 @@ function filterNoqaComments(lines: string[]): string[] {
});
}
-const CodeExample: React.FC = ({
+const contentCache: Record = {};
+
+function processModule({
+ module,
+ lineStart,
+ lineEnd,
+ path,
+}: {
+ path: string;
+ lineEnd?: number;
+ lineStart?: number;
+ module: any;
+}) {
+ var lines = module.default.split('\n');
+
+ const sliceStart = lineStart && lineStart > 0 ? lineStart : 0;
+ const sliceEnd = lineEnd && lineEnd <= lines.length ? lineEnd : lines.length;
+ lines = lines.slice(sliceStart, sliceEnd);
+
+ lines = filterNoqaComments(lines);
+ lines = trimMainBlock(lines);
+ contentCache[path] = {content: lines.join('\n')};
+}
+
+const CodeExample: React.FC = ({...props}) => {
+ return (
+
+
+
+ );
+};
+
+const CodeExampleInner: React.FC = ({
filePath,
title,
lineStart,
@@ -37,31 +68,35 @@ const CodeExample: React.FC = ({
pathPrefix = 'docs_beta_snippets/docs_beta_snippets',
...props
}) => {
- const [content, setContent] = React.useState('');
- const [error, setError] = React.useState(null);
-
- React.useEffect(() => {
- import(`!!raw-loader!/../../examples/${pathPrefix}/${filePath}`)
+ const path = pathPrefix + '/' + filePath;
+ const isServer = typeof window === 'undefined';
+ if (isServer) {
+ /**
+ * Note: Remove the try/catch to cause a hard error on build once all of the bad code examples are cleaned up.
+ */
+ try {
+ const module = require(`!!raw-loader!/../../examples/${path}`);
+ processModule({module, lineStart, lineEnd, path});
+ } catch (e) {
+ console.error(e);
+ contentCache[path] = {error: e.toString()};
+ }
+ }
+ if (!contentCache[path]) {
+ /**
+ * We only reach this path on the client.
+ * Throw a promise to suspend in order to avoid un-rendering the codeblock that we SSR'd
+ */
+ throw import(`!!raw-loader!/../../examples/${path}`)
.then((module) => {
- var lines = module.default.split('\n');
-
- const sliceStart = lineStart && lineStart > 0 ? lineStart : 0;
- const sliceEnd = lineEnd && lineEnd <= lines.length ? lineEnd : lines.length;
- lines = lines.slice(sliceStart, sliceEnd);
-
- lines = filterNoqaComments(lines);
- lines = trimMainBlock(lines);
-
- setContent(lines.join('\n'));
- setError(null);
+ processModule({module, lineStart, lineEnd, path});
})
- .catch((error) => {
- console.error(`Error loading file: ${filePath}`, error);
- setError(
- `Failed to load file: ${filePath}. Please check if the file exists and the path is correct.`,
- );
+ .catch((e) => {
+ contentCache[filePath] = {error: e.toString()};
});
- }, [filePath]);
+ }
+
+ const {content, error} = contentCache[path];
if (error) {
return {error}
;