私は会社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. 異なる環境
- 3. あるJavacと異なる環境
- 4. 異なる環境のAspx
- 5. 仮想アプリケーション用の異なるアプリケーション設定/環境変数
- 6. コントロールIDのレンダリング環境が異なる
- 7. CSSと異なる環境
- 8. 異なる環境のsecurity.ymlファイルが異なる
- 9. App Storeで同じ会社の開発者アカウントが異なる
- 10. Azureロジックアプリケーション異なる環境に配置
- 11. ASP.Net環境ごとに異なるweb.config
- 12. 環境によって異なるactionRequest
- 13. Grails環境の動作をカスタマイズする
- 14. 1つのgrailsコマンドに異なるクラスパスを設定する
- 15. 異なる環境の単一のデータセット
- 16. CakePHPの異なる環境は?
- 17. TESTとDEVELOPMENT環境の異なるデータソース
- 18. 異なる環境のブートレール3.1
- 19. 異なる環境用のJboss-web.xml
- 20. 同じURLの異なる環境 - 1つは成功し、もう1つはSSLエラーで失敗する
- 21. ユーザーが会社にドライブフォルダを1つアップロードできるようにする
- 22. 持株会社1ページクリエイティブウェブサイトデザイン
- 23. Travis-CIの2つの異なるシェル環境
- 24. Laravel 5.3 - 社会的なログインに疑問がある
- 25. 1つのDjangoプロジェクトに2つの仮想環境がありますか?
- 26. * Nix環境で少なくとも3つの会話があるIPアドレスを抽出する
- 27. 環境に応じてシリアライズ後の結果が異なる
- 28. 異なるドメインの異なるWebサイト、1つの.NET MVCアプリケーション?
- 29. R:ある環境を別の環境にコピー/移動する
- 30. 2つの異なるIBM BPM Std 8.5.7環境に対して1つのデータベースを設定できますか?
私はあなたがマルチテナントアーキテクチャで行くべきだと思いhttps://en.wikipedia.org/wiki/Multitenancy拡張値の全体的な、その後、具体的な方法を保存した業務に応じて、その後基底クラスを作成する拡張で見ることができます – Abs