私は会社Aのために行われるGrailsアプリケーションを持っています。今度は会社Bのためにいくつかの変更があります。
私はプロジェクト全体を複製したくありませんそれは代わりに、私はその後、会社= Aの場合」のように行うことができますので、いくつかの企業固有のコードの部分と同じプロジェクトを持ちたい
以降(などコードの重複、ハード管理、両側のバグを修正し、)問題を作成しますので、 ... "。
違いは、クラスレベル(会社ごとに別々のクラスファイル)またはコードのわずかな部分(80%同一コード+ 20%会社固有コードの同じクラス)である可能性があります。
いくつかの設定可能なコード部分を持つ同じGrailsプロジェクトを持ち、A社またはB社のプロジェクトを別々にビルドできるようにする最良の方法は何ですか?異なる環境(会社)に1つのGrailsアプリケーションがある
答えて
は、モジュールおよび/またはプラグインにあなたのプロジェクトを分解します。両社のアプリケーションに共通する部分があり、会社の特質を提供する機能が拡張されます。
はまた、それはすべてのデータセットがあることを行っている絡み合っ方法によって異なり、スタンドアローン(マイクロ)サービス
私は次の会社のために何が変更されるのか事前にわかりません 2.変更は非常に小さなコードブロック全体の共通ロジック内になる可能性があります たとえば、gspファイルでは、別のデータ行他の会社にはいけない会社のため プラグインやサービスとして各小さな部分を持つことは、可読性に影響を与える膨大な量のプラグインやサービスを作成します。 – Artin
これを解決する方法はたくさんあります。あなたはアプリAをBにコピーし、Bを適切に変更して、両方のアプリを比較し、共有する共通部分を確認することができます。いくつかの部分は "コア"に抽出することができ、他の部分はパラメータ化することができます – injecteer
injecteerに同意する必要があります。あなたは正しいです、あなたは、会社2、3、またはnの変更を事前に知っていません。小さな違いは、おそらくあなたはコードで設定値を使って対処します。より大きな違いは、ビルド設定を使用して企業固有のプラグインに入れ替えることができます。あなたは現在、うまく設計されたプラグインにリファクタリングすることで、将来の苦痛を軽減することができます。 – railsdog
へのアプリの特定の部分を変換すると考えることができます。同様に私はどれほど大きく変化するのでしょうか?プラグインへの分割が不可能で、データが同じデータベースにまたがっていて、猫がまだ犬ではなく猫の会社になることは大丈夫です。そして、あなたは
- 1. 異なる会社の同じアプリケーションをアップロードする
- 2. あるJavacと異なる環境
- 3. 異なる環境のAspx
- 4. コントロールIDのレンダリング環境が異なる
- 5. CSSと異なる環境
- 6. 異なる環境のsecurity.ymlファイルが異なる
- 7. App Storeで同じ会社の開発者アカウントが異なる
- 8. Azureロジックアプリケーション異なる環境に配置
- 9. 環境によって異なるactionRequest
- 10. Grails環境の動作をカスタマイズする
- 11. 1つのgrailsコマンドに異なるクラスパスを設定する
- 12. CakePHPの異なる環境は?
- 13. TESTとDEVELOPMENT環境の異なるデータソース
- 14. 異なる環境のブートレール3.1
- 15. Laravel 5.3 - 社会的なログインに疑問がある
- 16. * Nix環境で少なくとも3つの会話があるIPアドレスを抽出する
- 17. 環境に応じてシリアライズ後の結果が異なる
- 18. 異なるドメインの異なるWebサイト、1つの.NET MVCアプリケーション?
- 19. R:ある環境を別の環境にコピー/移動する
- 20. 2つの異なる環境のログを単一のログファイルに記録する
- 21. Oracle Database:SQLクエリーが異なる環境で異なる動作をする
- 22. 個人プロフィールのない会社のFacebookアプリケーションを作成する
- 23. 異なる環境では小さな違いがあります
- 24. Grails環境用のIntelliJ実行コンフィギュレーション
- 25. さまざまなサーバー環境でピクセルが異なる
- 26. man -lsを呼び出すときに、異なる環境に異なるコマンドラインオプションが含まれるのはなぜですか? (環境:codecademy、cb.vu)
- 27. 異なる環境でヒロクのシングルアプリを設定するには?
- 28. 複数のデータベースアダプタを1つの環境にインストールする
- 29. 1つのサイトに複数の異なるセッションがある
- 30. 1つのアプリケーションに2つの異なるアイコンを作成
私はあなたがマルチテナントアーキテクチャで行くべきだと思いhttps://en.wikipedia.org/wiki/Multitenancy拡張値の全体的な、その後、具体的な方法を保存した業務に応じて、その後基底クラスを作成する拡張で見ることができます – Abs