私のサーバー側は Rails で、サーバー側のレンダリング (prerender: true) で react-rails を使用しています。最近、react-router-relay でリレーを使用し始めましたが、サーバー側のレンダリングはできなくなりました。データのフェッチには、サーバーのレンダリング時には使用できないタイムアウトなどを含むグラフql サーバーとの通信が含まれているようです。したがって、graphqlの呼び出しを避けるために、サーバー側のリレーストアにデータを事前に注入する方法が必要だと思います. このライブラリを見つけました: https://github.com/denvned/isomorphic-relay-router、しかし、react-rails の使用と互換性がないため、使用できません (たとえば、どこにも app.get がありません)。私のアプリなので、そこに記載されている一致機能を使用する場所はありません)。これを機能させる方法について何か考えはありますか?
1 に答える
同様の問題に遭遇しました。Railsで動作するようになった方法の実装をご覧ください。私はそれをすることをお勧めしませんが...
これをチェックしてください:https://github.com/brandfolder/rails-graphql-relay
アップデート:
ruby のブロッキングの性質に関する多くの問題に遭遇しました。これを回避するには、アプリの一部としてノードにシェルアウトするソリューションをハックする必要がありました。
代わりに、3 つのアプリケーションをビルドしました。
1) すべてのビジネス ロジックをカプセル化する JSONAPI 準拠のパブリック API。https://github.com/brandfolder/jsonapionify上に構築されたhttps://api.brandfolder.com/v2/docs
2) JSON API と通信する GraphQL サーバー。注: Express-graphql (ノード) を強くお勧めします。ノードの非同期/ノンブロッキングの性質により、express-graphql は ruby でブロックするのではなく、一度に複数の API 呼び出しを行うことができます。 https://github.com/brandfolder/graphqlify
3) React/Relay アプリケーションを提供するアプリ。これは、react コードを提供するための browserify を使用した単なるアセット パイプラインです。これには、ReactDOMServer を使用してサーバー側のレンダリングを処理するコードも含まれています。【個人保管庫】
これはおそらくあなたが探しているよりも複雑な例ですが、これにより、可用性の高いパフォーマンスの本番アプリケーションを実行できます。あなたの場合、GraphQL サーバーとフロントエンド コードの 2 つのアプリがあれば、簡単に解決できます。これにより、Ruby でバックエンドが GraphQL サーバーをブロックすることを心配することなく、フロントエンドをコンパイルできます。