非常に大きなレールアプリケーションを構築し、エンジンを使ってメインアプリケーションから「モジュール」を分離することを検討しています。宝石としてのレールエンジンを構築するためのワークフロー
私たちはgemモーターヘッドを使用して小型エンジンを作成することでこのプロセスを開始しました(active_ifコンポーネントが必要です)。 そのエンジンは、メインアプリから削除され、git initが与えられ、githubにプッシュされました。
メインアプリケーションは、Gemfile内で宝石を引き出すことができました。
概念の証明の間、それは動作しますが、それほど効率的ではありません。また、新しいエンジン/宝石を更新することは、ある意味ではサブモジュールであるため、やや面倒です。このようなモジュール型のアプリケーションを構築するときにエンジン/宝石を構築し、維持するための適切なワークフローは何ですか?モジュールとして宝石やエンジンの展開について、事前
エンジンの宝石を取り込んでメインのRailsアプリに埋め込むことができます。たとえば、 'app/engines'や' lib/engines'の下にあります。あなたのGemfileを使ってその相対パスからgemを直接ロードすることができます( 'path:'オプションを使って)。これにより、すべてが1つのリポジトリに保存されますが、論理的に完全に分離されます。必要に応じて、各エンジンを実際の宝石に完全に抽出することもできます。 –
ありがとうロバート、そしてええ、我々は両方のオプションを試しました。主な質問は、彼らが完全に宝石を分け合わせるようにしたいのであれば、それをどのように発展させるのが最善でしょうか?すなわち、彼らは現在、gemfileなどを持っていないし、レールサーバ経由で単独で起動することはできません。また、宝石に変更が加えられたとき(開発途中)、メインアプリケーションの再起動や宝石のスプリングが必要になる – Rockman
コメントはSOAではなくモノリスの引数です。 DHHの方針:https://m.signalvnoise.com/the-majestic-monolith-29166d022228 – toddmetheny