Playframework
まずはアプリケーション仕様 今回は特に何も考えず、Evolution で突っ込んだ文字列を画面に表示するだけ。 ジンプルなことは良いことだ。 教科書はこれ PlaySlick - 2.5.x Playframework プロジェクト作成 いつものこと activator new play-scala を選択する…
サブプロジェクト自体は、Playframework2.3 から存在していて、当時はあまり使い道も思い浮かばなかったが、今では大分使いやすくなってたのでメモ。 完全独立した sbt プロジェクトを取り込む このケースでは、完全に独立した sbt モジュールを取り込みます…
セキュリティヘッダなんて、ヘッダに組み込むだけのものなので、ザクッと。 package filters import javax.inject.{Inject, Singleton} import akka.stream.Materializer import play.api.Configuration import play.api.mvc.{Filter, RequestHeader, Result…
何で今更かというと、これつかえねーかなと思ったから。 最初は、Forms でのバインドをしようとしたのだけど、早速フォーラムが見つかりました。 キーワードは Play recursive form https://groups.google.com/forum/#!topic/play-framework/Ya1hPmR2QtY こ…
Playframework 2.4 において、フィールドコンストラクタの仕様も変わったので、対応したチェックボックスを作ってみる。 Custom Field Constructors これがなんなのかというと、input とかの helpers の外枠の事。 いつぞや Bootstrap 対応した フォームヘル…
まず適当に Singleton アノテーションをくっつけて使用する。 package utils.modules import javax.inject._ /** * アクセスカウンター */ @Singleton class AccessCounter { @volatile private var price = 0 def add(p: Int) = price += p def get = price…
まず前提として、Playframework にはフィルタという機能がある。 Playframework 2.3.x 以下の場合は、Global オブジェクトにミックスインする形式をとっていた。 ScalaHttpFilters だが、Playframework 2.4.x 以降は、DI も含めて形式が変更となり、root パ…
完全に親子関係でしたねってだけ。 子のオブジェクトは親から参照できるけど、親のオブジェクトを子は参照できない。 同時に、子は横つながりを持たない。 まぁなんとなく想像通りな訳で、使い道的には、幾つかのプロジェクトで共有しておきたい機能をサブプ…
教科書は下記 SBTSubProjects で、まずはプロジェクト root ディレクトリに下記を一気に作成 modules /rest_apis /controllers /conf そして、 modules/rest_apis/build.sbt を作成する。 ここに実は二つ罠があった。 公式では下記(20015/7/8 時点)が書か…
色々変わったそうなので、まずはハイライトを見てみる。 https://www.playframework.com/documentation/2.4.x/Highlights24 DI サポート テストにおけるモックを容易にしたかった 軽量な組み込みPlayアプリケーションや、一つのJVM上で複数のPlayアプリケー…
何がしたかったかと言うと、Bootstrap の形状にうまく乗せたかった。 で、試行錯誤して自分で使っててまぁ違和感がなくなったのでメモ書き Playframework の Form については本家を参照すべし。 まず、Playframework の helper で吐き出すと、デフォルトは以…
基本的に ApplicationSpec と IntegrationSpec の二つ まずは 2.2.x のが下記 import org.specs2.mutable._ import org.specs2.runner._ import org.junit.runner._ import play.api.test._ import play.api.test.Helpers._ /** * Add your spec here. * You…
それぞれがなんなのかは下記参照 AngularJS の入門をしてみる - 謎言語使いの徒然 Playframework2.3 で RequireJS 弄ってみる - 謎言語使いの徒然 で、特に難しい話とかはなくて。 build.sbt で Angular 読んで libraryDependencies ++= Seq( jdbc, anorm, c…
まずは WebJars の使い方おさらい Playframework2.3 では WebJars にデフォルト対応しているという事で、まず単純に Bootstrap を読んでみる。 libraryDependencies ++= Seq( jdbc, anorm, cache, ws, "org.webjars" % "bootstrap" % "3.0.2", "org.webjars"…
まず最初に断っておく。現状(2014/08/25) 2.4 が RC 状態にある。 そして、2.4 には触れない事を断っておく。 Playframework2.2 おさらい 仕事で Playframework 2.2.3 を延々使ってると、新しいバージョンアップに疎くなるので、とりあえず乗り換えも視野に…
何故にメモかというと、HikariCP がそもそもサンプル無さ過ぎて地獄を見たから。 まずは基本的な ScalaActiveRecord アプリを作る Play のサンプルアプリケーションをまずは作る。 play new HikariSample ウィザードくらいは任せた。 で、速攻、 ScalaActive…
可変長のフォームに対応する - 謎言語使いの徒然 の続き。 ついでだから動的にフォームを突っ込んでみる。 まずは build.sbt に下記を突っ込む。 coffeescriptOptions := Seq("bare") Coffee コードをコンパイルする際に、ラップをしない操作。 で、coffee …
まぁ特に難しい話はなし。 リピートしたい類のモデルを用意する。 package models case class Game(name: String, vendor: String) object Game { import play.api.data._ import play.api.data.Forms._ def form = Form(maps) def multiForm = Form(single(…
CentOS5.10 で動作確認。多分 CentOS 6.x もそんな変わらない筈。 段階を踏もうか。 Play アプリをリリース用にコンパイルする Chef を使ってJavaを突っ込む Chef でデプロイ用 Cookbook を作って配置する 起動スクリプトを書いてデプロイする knife solo co…
まぁやってる事は ServletFilter とあんまり変わらない。 まずは適当にフィルタを作る。 コピペで安心はモットーです(2.2.1 で確認他のバージョンは知らん) package utils import play.api.mvc.{RequestHeader, Filter} import scala.concurrent.Future impo…
ログインしてなかったら…という処理は皆書く筈。 Playframework 2.1 あたりから Security クラスが出来たらしい。 当然 2.2 でも使えるのでメモ。 package controllers.helpers import play.api.mvc._ import controllers.routes trait LoginController { se…
Java のテンプレートエンジン - 謎言語使いの徒然 でさくっと見たテンプレートを、じゃぁPlayframeworkでどうやるんだろうと、ドキュメント眺めながらやってみた。 で、まずはファイルが何処に配置されてるのかを返すクラスを作成。 package utils import or…
結構みんな探しそう、、、というかきっとアクセス増えそうというあざとい意図で書いてみる。 で、HTTPからファイルを送信するパターンは二つ。 純粋に HTTP Request body にバイナリ突っ込む方法これは単純ですよね。 // routes に追加 // POST /simple cont…
経緯:試しに書いたらこんなことになり、フォーラムでは対応してないとか言ってて、じゃぁテストとかどうすんだろう?とか思ったらこの辺 で テストで「WS.url で multipart 飛ばせないの?」→「FakeRequest作りこんでテストして」とかそういう話があったの…
適当なサンプルアプリを作る。 play new sample で、それを dist する。 play dist すると、下記が出来上がる。 sample/target/universal/sample-1.0-SNAPSHOT.zip アプリケーション名-バージョン.zip これを適当にサービス化できそうなディレクトリに展開す…
Scala ActiveRecord まずは build.sbt でプラグインを指定Playframework2.2 でまだフォームインテグレーションは試してないけど、O/R として使う分には問題なかったのでメモ。 libraryDependencies ++= Seq( "com.github.aselab" %% "scala-activerecord" % …
WSライブラリ Playframework 2.0.x 系は WS コマンドで外部サイトアクセスできるのですが、2.0 系から気づけば応答値が変更されていて色々戸惑ったので。 2.0.x 系は val promise:Promise[Response] = WS.url("http://xxx.xxxx.net").get() Promise 型は独自…
やることはFacebookアカウントでサイトのアカウント作って、ログイン認証したいだけだったのだが、どうも Playframework2.2 では Pac4J が対応していなかったので、自力で認証してみた。 まずは設定に Facebook のアプリケーション情報を突っ込む auth { fac…
Playframework2.2 になってから projects/Build.scala が抜けて、build.sbt に直接書くようになってるので注意。 っても、sbt 知ってればどうという事もない。 resolvers += "Sonatype snapshots repository" at "https://oss.sonatype.org/content/reposito…
といってもハッシュを作るだけですが、Playにはcryptが存在する ライブラリは play.api.libs.Crypto で、基本的に下記の定義がある 不可逆(ハッシュ化) sign(String):String sign(String, Array[Byte]):String 可逆 encryptAES(String):String encryptAES(St…