Rails 3エンジン(またはプラグインや宝石)の作成を進める上で最善の方法を考えてください。この質問の長さRails 3 Engine/Plugin/Gemを作成する際にガイダンスが必要
謝罪...ここにパート1です:
私の会社は、当社のアウトバウンドの顧客の電子メールのすべてを送信する電子メールサービスプロバイダを使用しています。彼らはSOAP Webサービスを作成しました。これをサンプルRails 3アプリに組み込みました。最初にアプリケーションを作成するという目標は、そのコードを受け取り、それを宝石に変えることでした。
ここにいくつかの背景があります:SOAPサービスには23のアクションがあり、サンプルアプリケーションを作成する際に同様のアクションをグループ化しました。これらのアクションの中には、SOAP WS経由でメーリングリストとHTMLコンテンツのアップロード/ダウンロードを行うものがあります。その結果、HTMLコンテンツを格納するテーブルがいくつかあり、一種の「ステージング領域」としてリストされます。
すべて私はSOAPアクション(ではなくActiveRecord :: Baseから継承する)を含む5つのモデルと、MySQLデータベースと対話する3つのモデルを持っています。
私はそれぞれのモデルに対応するコントローラと、実装した動作をテストするのに役立つ各SOAPアクションのビューも持っています。
だからここからどこに行くのかわかりません。私のコードは大量のDRYを必要とします。例えば、WSは、ユーザ認証情報が各要求のエンベロープ本体に送られることを要求する。つまり、モデル内の各メソッドには、同じauth infoがハードコーディングされており、非常に繰り返しがあります。明らかに私はそれがきれいになるようにしたいと思います。また、コードを見直して、要求自体が繰り返しあり、おそらく統合できることを確認します。
私は自分で考え出すことができますが、ここには明らかなようなものがありますが、わかりません。私のすべてのモデルで使用できるメソッドを作成するにはどうすればよいですか(特に、方程式のユーザー認証の部分を考えて)。
はここでパート2です:
最初から私の意図は、それを使用することができ、私のコードを抽出し、私のESPの他のクライアントのいずれかの包み宝石にそれをパッケージ化することであった(プラス私は別のいくつかでそれを使用することがありますアプリ)。しかし、私はそれが非常に構成可能であることを望んでいます。 Gemfileに宝石を追加するだけでデフォルトの最小構成(つまり、のSOAPアクションをラップするモデル)が作成されている必要があります。しかし、私は、ユーザーを起動させるためにいくつかのツール(ジェネレータやRakeタスクなど)を用意することもあります。私が念頭に置いておきたいのは、マイグレーションファイル、モデル、コントローラー、またはビュー(または必要な場合は9ヤード全体)を作成するオプションです。
ここで、私がプラグインまたはエンジンルートを追いかけるべきかどうかを知っているところです。私はジョーダンウエストのシリーズを読んでエンジンを作りましたが、私はその考えが本当に好きですが、それが私にとって正しいルートかどうかはわかりません。
あなたがここまで読んで、私はあなたの地獄を混同していないのであれば、私はいくつかのガイダンスを使用することができます:)
おかげ
ありがとうございました!それはかなり役に立ちます。 –