#catalyst-jaで質問してきた

perlのえらい人が集まる#catalyst-jaで質問してきた。


ここからどうでもいい話( ・∀・)

そもそも#catalyst-jaって何

freenode上に存在するcatalystな人が集まるチャンネル。catalystについて調べてるうちに知った。
最初はfreenodeという単語すら知らなかったので、ググってたどり着いたはいいけど、このチャンネル、perlのえらい人ばっかりいる。
初めてjoinしたときはビビってすぐ落ちた。
このチャンネル、ググっても様子が分からなかったので、とりあえずサーバマシンでircクライアント立ち上げて入りっぱなしにしてみた。
その後、長いこと放置してログを見てみるも、全然発言が発生しない。
どう見ても初心者お断りな雰囲気でガクブル。
catalystのネタや小話や質問が毎日飛び交ってるのを想像してた。


どうでもいいがある日一度質問したら華麗にスルーされて泣いたのは秘密だ。
これは質問の仕方が悪い。

すみません、モダンperl入門catalystでモデル分離をやってるところで質問があるのですが、どなたかいらっしゃいますか?

いや、人が居るのか居ないのかすら分からなかったから誰か居たら訊こうと思って…
という事があった、と神に話したら
「先に質問書けばよかったのに」
と指摘された。確かに。俺のコミュ力の無さが残念すぎる。
こういう場未経験なんだーとか言い訳してみるテスト。多分、考えてから発言しろって返される。
考えた末がアレって言ったら、多分、それは残念だって言われて終わる。


ここからありがたい話( ・∀・)

明確な質問の仕方をしてみた

小心者なのでスルー体験が結構トラウマ的になる。が、性懲りも無くまた質問してみた。
ただし学習して質問形式を変えた。

すいません、Catalyst::Model::Adaptor系を使ってる人に質問なんですが、例えば1件searchしたいとき、それだけのためにモデルにそういうメ
ソッドを実装しますか?それともコントローラで$c->model('DBIC::Hoge')->searchしますか?

vkgtaroさんが反応してくれた。以前のコメントといい、感謝。
ここから長々と質問しまくる俺。
vkgtaroさんをはじめ、他の方からも答えてもらった。


以下、備忘録、兼、アウトプットのための、俺の質問と頂いた答え。

  • APIDBICCRUDなメソッド(searchなど)を書くのはどうなのか?
    • そのテーブルを包括したモデルを作っているのであれば、それでもいいのでは
    • コントローラで直にsearch呼んでもいいのでは
    • わざわざsearchのラップ書くのは面倒だし
  • コントローラにロジックを書くのが悪いのは分かるが、どこまでがロジックになるのか。例えば、1件searchするだけの処理もロジックとなり、コントローラに書くのは悪いのか?
    • 人による
    • (vkgtaroさん)個人的にはテストをすべきか否か、で考える
      • 自分が書いたロジックのテストならともかく、DBIx::Class::ResultSet::searchのテストまでする必要はない
    • その1件searchの前後の処理が重要なら、そこをまとめて一つのAPIとして、テストすればいい
  • sessionとstashはよくコントローラで使うが、これもロジックをコントローラに書いてるから悪いことになるか?

↓変換

  • stash や session を API に渡すといけないか?
    • どっちもただのハッシュrefだから値を渡せばいい
      • まんまモダンPerl入門で挙げられていた例である。$c->request->paramを渡してたあそこ
      • $c->user_existsとかも値で渡せばいい。でもわざわざこの値渡すのは面倒…渡すしかないか?
  • MyApp::Web::という、名前空間はおかしくないか?(ここの「名前空間」)
    • 確かにそうですね
      • 同意を得られた。この点に自分で気付けていればよかったな
    • chokan と mobircbot
    • vkgtaroさんのcatalyst構成を教えてもらう
      • lestrratさんもゆーてる通り、人のcatalystソース見る機会は少ないのでありがたい
      • 仕事で使ってるのは公開できないし
    • 実は俺、以前C::P::Authenticationの設定ミスってるよって突っ込まれたfoosinでした(あちこちで違う名前を使ってる俺。今回のircでも適当な名前を使ってた)
      • ブログ購読されてたw
      • いかん、頭悪い日記書けねえ

というわけで

#catalyst-jaで答えてくれた皆さん、ありがとうございました。