10/02/18 18:26:01
>>969
これは、「層」というか、ControllerとViewに介在してシンプルにするパターン(って書いてあるけど)かなあ。
>>968,973,974
質問にもなるけどサービス層として切り出したいものって、
いわゆる「ビジネスロジック」ってやつかな、と思ってるんだけど合ってる?
データに属していない処理(複数のモデルが関わっていて、どのモデルにも置きにくい)で、
Webにも依存しないので単独でも起動できるようなものを、
「サービス」としてまとめたいのかなと思った。
(Railsの)ControllerはWeb依存なのでView間の遷移とかデータをViewにパスするとかを専門でやる。
俺のイメージはこんなん。
977:973
10/02/18 23:36:13
>>976
自分の言っているサービス層は、そういう意味だと思う。
モデルまたはサービス層はWebに依存しないようにして
runnerやconsoleで動作確認しやすいように作ってる。
とりあえず、今はlib/services以下にサービス層を作って置いてる
lib/services/sample_service.rbという感じ。
Services::SampleServiceという感じで名前が長くなるのがちょっと面倒だけど。
サービスを作る時の基準ってみんなどうしてるのかな。
自分は複数のモデルが絡むトランザクション処理とかだけサービスにまとめて、
単一のモデルで簡潔する処理は、そのモデル内に書いてる。
978:nobodyさん
10/02/19 02:41:48
libに置くのは最悪だろ
アプリケーションから取り外して再利用できるコードを置く場所
979:977
10/02/19 02:48:31
>>978
自動で読み込まれるところに置きたい
モデルとは区別したいので、app/models以外に置きたい
この2点で考えると、lib/serviceというディレクトリに置くのが手っ取り早いってだけで
今はそうしてる。
他にいい場所あったら教えて欲しい。
app/services以下に置く事にして、
environment.rbあたりにapp/services/*.rbをrequireする処理を書けばいいかな。
980:nobodyさん
10/02/19 08:35:28
そのへんのためかどうか知らないけど、Rails3ではRails.root/app/ の下の
ディレクトリが全部load pathに含まれるようになる。
981:nobodyさん
10/02/19 09:10:06
そういうのはrorは弱いしな。
梅。
982:nobodyさん
10/02/19 11:40:07
>>979
environment.rb に
# Add additional load paths for your own custom dirs
# config.load_paths += %W( #{RAILS_ROOT}/extras )
っていう箇所があるからそうすればいいのでは。
config.load_paths += %W( #{RAILS_ROOT}/app/services )
983:nobodyさん
10/02/19 12:05:30
埋める前にそろそろ次スレ他てようぜ
984:nobodyさん
10/02/19 16:13:46 WbFNhWFy
【Ruby】Ruby on Rails Part9
スレリンク(php板)
985:nobodyさん
10/02/19 23:08:27
それじゃ埋め。
986:nobodyさん
10/02/20 01:47:12
埋められまsrん。