私はメインアプリケーションと管理アプリケーションをマイクロサービスとして構築しており、api経由で通信しています。私はそれらの2つのアプリの間でいくつかの定数を共有したいと思います。Railsマイクロサービス間でconstansを共有するには?
たとえば、所有者または正規の役割を持つユーザーモデルがあります。管理アプリではユーザーを検索できます。この検索では、ハードコードされたユーザータイプ(所有者、通常)のドロップダウンがあります。これは問題ありませんが、名前を変更すると(例:標準 - >標準)、管理アプリも更新する必要があります。
メインアプリでコアネーミングを変更するたびに、これらの定数を何とか共有したいので、メインアプリのすべての変更が同時に管理者を変更します。まずJSON APIを介して管理者にメインアプリから定数を送信している
:については
は、今私は長所と短所の両方で、2つの解決策を見つけました。私は、クラス変数にすべての定数をフェッチして格納するクラスを構築しているので、アプリケーションのすべての部分から利用できます。このソリューションの良い点はパフォーマンスです(メモのおかげで、APIリクエストは1つしかありません)。後で簡単に使用できます。悪いことに、私はこの場合のテストをどのように扱うか分かりません。もちろん、私のテストではメインアプリにリクエストをしてこのリクエストをスタブすることはできません。メインアプリケーションの定数を変更するたびに、管理アプリでテストを変更する必要があるためです。
私が考えていた第2のアプローチは、すべての定数を格納する宝石を作ることでした。実装が非常に簡単ですが、これは、メインアプリケーションの定数を変更するたびにこのレポを変更する必要があることを意味します。また、私はビッグチームと一緒に仕事をしており、彼らは同時に2つのレポに取り組まなければならないことに満足していません。
これらのソリューションについてどう思いますか?最初はテスト以外の私にとって完璧だと思われるので、実際の値を持たずにこれらの定数をスタブする方法をいくつか考えてみてください。私はまだ宝石の解決策を試していないので、いくつかの障害がある場合は教えてください。 この問題のもう一つの良い解決策があるのでしょうか?
私は個人的にはjson apiの解決策が目立たないように設計されています。誰もが共有機能を宝石で実装しています。 – mudasobwa
https:// githubと似たような感じです。com/spring-cloud/spring-cloud-config設定サーバー。しかしRubyでこのようなことが起こったことはありません –
共有データベーススキーマに存在する 'name'プロパティを持つUserオブジェクトを持つだけでは不思議です。これは大規模に強化されたように聞こえる。 – mcfinnigan