

ActiveRecordのモデル(テーブル構造と1対1の属性を持つクラス)以外のクラスはどこのディレクトリにどういう規約で置くべきでしょうか。

現在は、  
app  
↳models  
↳callbacks  
↳services  
↳view_objects  
↳decorators  
↳values  
↳controllers  
↳assets  
↳apis  
↳jobs  
↳converters  
↳helpers  
↳mailers  
↳views

といったディレクトリ構造をしています。  
ただ単にクラスと言っても抽象的だとは思うのですが、例えばデザイン・パターンで言うところのファクトリーや、プロキシー、ストラテジー等といったオブジェクトの生成やアルゴリズムを委譲させるためのクラスなどをイメージしております。


CC BY-SA 3.0
2015-12-06T02:28:48.340
19669
2016-10-10T01:19:52.763
12758
question
ruby-on-rails
ActiveRecordに関係のないクラスはどこにおけばいいのでしょうか？


「デザイン・パターンで言うところのファクトリーや、プロキシー、ストラテジー等といったオブジェクトの生成やアルゴリズムを委譲させるためのクラス」はRailsでは特に規約を決めていないので、「開発者の自由」という回答にしかならないと思います。

すでにservicesやview_objectsなど、非デフォルトなディレクトリをapp以下に作っておられるようなので、その延長線上で factories
や proxies のようなディレクトリを作れば良いのでは？とも思います。

あとは同じようなコンセプトのネット記事やGitHubのコード等を探して参考にする、といったところでしょうか。

例： [RailsでDDD - Qiita](http://qiita.com/haazime/items/5776e4e25b6527b682e7)

ただし、特別な理由がない限り、Railsは「Railsのレールに乗る（＝規約から外れずに作る）」のが一番開発効率が良いと思います。  
レールから外れると、変なところでハマったり、使いたいgemが動作しなかったりして、かえって時間が掛かることも多いです。  
また、チームで開発している場合はきちんと認識やルールを合わせておかないと、単なる「オレオレ実装」になって他の開発者が困る原因にもなります。

「超大規模なサービスを開発している」とか「学習目的で試しにやってみたい」といった理由でなければ、「レールに乗る」ことを最優先した方が良いと思います。  
（ちなみに、僕ももともとJavaやC#をやってたので、最初はレールから外れたくなることがよくありました。）


CC BY-SA 3.0
2015-12-06T21:49:47.677
19692
2015-12-06T21:49:47.677
85
19669
answer