13

通常のディレクトリ構造 (モデル内のモデル コード、コントローラー内のコントローラー コード) に従う Rails アプリを作成しました。

しかし、私は現在、新しい機能に取り組んでおり、そのためにいくつかの (私が呼ぶもの) 「サービス」コードを書きました。
新しい機能は、いくつかのデータをシステムにインポートすることです。現時点では、インポートを行うのは 2 つのクラスですが、さらに拡張することができます。

新しいコードはオブジェクトをモデル化していないため、モデルに属しているとは思いません(単一のオブジェクトにも直接関係していません。プレゼンテーションロジックではないため、コントローラーにも属しているとは思いません。

そこで、「app/services」ディレクトリを作成してそこに配置しました。テストを置いた「test/services」ディレクトリも作成しました。

すべてうまくいっていると思いましたが、「rake:test」または「autotest」を実行すると、新しいサービスのテストが実行されません。
今、レーキにそれらを拾わせる方法があると思いますが、これは私が何か間違ったことをしたという警告フラグですか?
コードが存在する場所が他にありますか、それとも「Railsのやり方」でやっていないのでしょうか?

通常、私がこのような問題に遭遇する前に、レールにはすでに解決策があることがわかっていましたが、慣習については知りませんでした。これはそれらのケースの1つですか?

4

2 に答える 2

22

これが「lib」フォルダーの目的です。

libフォルダーは自動的に検索されたパスにあるため、次のことができます

class MyFoo
end

lib/my_foo.rb呼び出して

MyFoo.new

コントローラーから、コードは必要なくロードされますrequire 'my_foo'

于 2008-11-12T20:04:45.873 に答える
1

./lib は間違いなく行くべき場所です。

これを配置する別の場所は、何をしているかに応じて、config の下の initializers ディレクトリにあります。全体をプラグイン化することも検討できますが、機能が少ない場合はおそらく価値がありません。

于 2008-11-12T20:07:20.237 に答える