1

モジュール方式でアプリケーションを構築したい: たとえば、次のようにします。

Users->has_and_belongs_to_many->Projects
Users->has_and_belongs_to_many->Tasks
Projects->has_many->Tasks
Tasks->belongs_to->Project (1 task belongs to 1 project.)

: プロジェクトとタスクには多数のユーザーを含めることができます。

私がこれを構築することを考えていた方法は、次のことです。

  • ユーザー=ジェム
  • プロジェクト = ジェム
  • タスク = ジェム

それぞれが json (ember の場合) または html を返すことができます。どちらもお互いに依存していません。アイデアは、それぞれが単なる詳細であるということです。Rails、ember、および html はすべて単なる詳細です。

どうすればこれに取り掛かることができ、一日の終わりにそれらをパズルのようにつなぐことができますか? またはこれは実現可能ですか?

現在、このコンセプトのユーザー部分はほぼ完成しています。モデル、テスト、コントローラー、およびビューが含まれています。それを gem としてバンドルできますか、それともコントローラとモデルのみをバンドルする必要がありますか? この「ユーザー」gem は、FriendlyId gem を使用て URL の見栄えを良くします。実際、すべての「gem」(プロジェクト、タスク、およびユーザー) はこの gem に依存します。

私が望むようなモジュール性を実現するには、何をすることをお勧めしますか? それは良い習慣ですか?悪い習慣?

4

2 に答える 2

2

Rails エンジンを使用するのがよい方法だと思います。

各エンジンは、それ自体がアプリになることができます。

たとえば、アプリに多くの認証機能を追加するDevise - gem は Rails Engine です。アプリから使用できる独自のコントローラー、ヘルパー、メーラー、およびビューを提供します。

私は個人的に、エンジンを使用して i18n Web バックエンド (Redis への翻訳の入力と保存を可能にする管理ページ) を多くのアプリにプラグインし、ユーザーのバグ レポートと Q&A 機能をいくつかの既存のプロジェクトにプラグインするプロジェクトに取り組んでいました。

各エンジンは gem としてプロジェクトに含まれており、通常のアプリが行うもの (コントローラー、ビュー、モデル、アセット、その他の gem...) で構成できます。

私は個人的に、そのようなアプローチで成功した話を聞いたことがありません (ただし、誰かが試したかどうかはわかりません)。

于 2013-09-27T20:45:14.800 に答える