Play2のroutesやscala templateを拡張する際の設定が微妙に使いづらい件 #play_ja

Yes you can also do a clean !
0
Toshiyuki Takahashi @tototoshi

Spring MVC の PathVariable とかってなんかいろいろ追加できたっけ?

2013-02-16 15:42:49
Nakamura Masato @Masahito

Play! v1.X系って割と頑張てっるし頑張ってたんですよ。だからこそv2.Xが出た後のMLが荒れてたと思うんですよね。v2.xでイラッとするところって大体v1.Xでできてた部分なんですよね。僕にもう少し実装力があればなー

2013-02-16 15:46:10
∃ugene 🥙yokot∀ @eed3si9n_ja

@xuwei_k あらかじめ TaskKey か SettingKey か決めなくちゃいけなくて、一度 SettingKey だと決まると TaskKey に依存できないのは確かに厄介ですが、じゃ全部 TaskKey にするというのが正しい解かというとどうだろう。

2013-02-16 15:51:09
Kazuhiro Sera (瀬良) @seratch_ja

個人的には Jersey みたいに String を一つ保持する case class だったら何もしなくても mapping 可能みたいなシンプルなのが好み。その case class に toLocalDate() みたいなメソッド生やしてそこから日付オブジェクト取得とかで。

2013-02-16 15:55:29
Kenji Yoshida @xuwei_k

@eed3si9n_ja まぁ確かにその辺りは微妙ですね…全部は明らかにやり過ぎですけど、「TaskKeyかSettingKeyか迷ったら、TaskKeyにしておけ」くらいな

2013-02-16 15:56:43
Kazuhiro Sera (瀬良) @seratch_ja

Jersey の場合はcase class じゃなくて普通の Java のクラスですけど。

2013-02-16 15:58:05
∃ugene 🥙yokot∀ @eed3si9n_ja

@xuwei_k 理想的にはプラグイン作者もビルド作者もいちいち Task か Setting かを考えずに sbt が勝手に静的か動的かを決定して欲しい。

2013-02-16 15:58:15
がくぞ @gakuzzzz

1つのStringだけを持つ case class であれば全て対応する QueryStringBindable なら作れそうだな

2013-02-16 16:03:52
がくぞ @gakuzzzz

と思ったけど QueryStringBindable の A って invariant じゃないですかー やだー

2013-02-16 16:06:02
がくぞ @gakuzzzz

bind と unbind があるからか

2013-02-16 16:06:22
Nakamura Masato @Masahito

@mumoshu Dev MLで反応みた方がいいんでないの

2013-02-16 16:08:29
Nakamura Masato @Masahito

Javaだとアノテーションで実現するような機能をScalaで実現するときのベストプラクティスが知りたい(まーJava知らないんすけど

2013-02-16 16:10:16
Yusuke KUOKA @mumoshu

@Masahito 反応をみるというか、言い出しっぺが作ることになると思うので、 http://t.co/WVHXi48w こういう流れになるのかなーと・・・。で、Issue切るよりMLから始めたほうが多くの人の目に触れるからMLがいいのかも!

2013-02-16 16:13:52
Nakamura Masato @Masahito

@mumoshu なるほど。楽しみにしてますよ:-) MLに流した方がissueが受け入れられやすいよう感じだよねー

2013-02-16 16:17:24
Yusuke KUOKA @mumoshu

@tototoshi こんにちはー。routesに関しては、routesファイル内でimportが書けたほうが直感的なので、そういうぷるりをしようかなーと思うのですが、どう思われますか?

2013-02-16 16:19:24
Yusuke KUOKA @mumoshu

@tototoshi templateの方も確かにいまいち感あるのですが、Build.scala以外にどこへ書くのがいいのか悩ましいですね…設定ファイルを追加?実行時設定じゃないですがapplication.confに書く?何か良い案があれば教えていただければm( _ _)m

2013-02-16 16:26:04
Toshiyuki Takahashi @tototoshi

@mumoshu importしなきゃいけないのってマッピングしたいクラス(LocalDate)ではなくてマッピングを請け負うimplicit object(QueryStringBindable)なのでroutesにそれを書いて自然になるかというと微妙だなあと思ってます。

2013-02-16 16:29:32
Toshiyuki Takahashi @tototoshi

@mumoshu 例えばGlobalみたいになにか決まった名前のオブジェクトを作って、その中にimportしたいオブジェクトを並べておくとかできないかなあとか考えてました。

2013-02-16 16:31:27
がくぞ @gakuzzzz

GlobalSettings の実装クラスのメンバが 自動 import されるといいのかも?

2013-02-16 16:33:10
Yusuke KUOKA @mumoshu

@tototoshi あーなるほど。確かにroutesにBindableのimportが並んでても全然直感的ではないですね…

2013-02-16 16:33:14
Yusuke KUOKA @mumoshu

@tototoshi おー、なるほど!それって、templatesImportにそのGlobalオブジェクト(パッケージのほうが安全かな)が入ってるような、play.Project向けのデフォルト設定を用意しておけばできるのかな。いいかもしれないですねー。

2013-02-16 16:39:16
Yusuke KUOKA @mumoshu

@tototoshi views.htmlのパッケージオブジェクト等に置いておけばimportされるのかもしれませんねー。Playのビューヘルパーもここに入ってるのでしたっけ… http://t.co/ufySEAfp

2013-02-16 16:44:49
Toshiyuki Takahashi @tototoshi

@mumoshu ん、なんか伝わってないかもしれないです。言いたかったのは例えば TemplateImports, RoutesImports っていうオブジェクトを用意すればこの中のメンバーがimportされます、みたいな決まりを作って、

2013-02-16 16:58:19
Toshiyuki Takahashi @tototoshi

@mumoshu RoutesCompiler, TemplateCompiler がそれらのファイルがあるのを検知すれば、生成される Scala コードの頭のほうで、import RoutesImports._, import TemplateImports._ とか

2013-02-16 17:00:12