私は2つの異なるRailsアプリを持つプロジェクトに取り組んでいます。1つはWebアプリで、もう1つはAPIアプリです。どちらも同じデータベースを使用しています。彼らが同じモデルとスキーマを使用するための適切な方法はどのように、または何ですか?現在、モデルファイルが1つのアプリから別のアプリにコピーされているように見え、違いを確認すると、それらはひどく同期していないように見えます。
1 に答える
いくつかのオプションが思い浮かびます。
Gitサブモジュール。モデルを個別のリポジトリ(またはリポジトリ)に保存し、それをGitサブモジュールとして各アプリに含めます。これにより、冗長性を持たずにそれらを再利用できますが、各アプリが同期して使用しているリビジョンを維持する必要がある可能性があります。
2つの異なる部分で1つのアプリにします。APIは単純なSinatra(または他のマイクロフレームワーク)アプリであり、Railsアプリ内にあり、パス/サブドメインにマウントされている可能性があります。これは作業量が最も少なく、最も単純かもしれませんが、おそらく最も雑然としています。
独自のAPIを使用してください。すでにAPIをお持ちですが、使ってみませんか?フロントエンドアプリはそれと通信するだけで、モデルロジックを内部に持つ必要はありません。これには、APIが機能し、フル機能を備えていることを保証するという優れた副作用もあります。これは、サードパーティだけでなく、APIを利用するようになったためです。
どちらを選ぶかはあなた次第ですが、私はたまたま最後のものを好みます。おそらくより多くの作業が必要になりますが、ビジネスロジックを外部にすることで(不可能ではないにしても、MVC違反をより困難にすることで)、全体的に優れた設計になる可能性があります。