Play frameworkのpidファイル「RUNNING_PID」ファイルの場所を変える(v2.0.4以降)
Play frameworkを本番環境にデプロイする場合に、PIDファイルを別の場所に置きたいなと思ったりします。 デフォルトだとプロジェクトディレクトリの直下にRUNNING_PIDというファイルが作成されます。 このRUNNING_PIDファイルを作る所のコードを確認すると play.core.server.NettyServer の中にあるようです。 def createServer(applicationPath: File): Option = { // Manage RUNNING_ ...
Play Framework 2.0でログファイルローテートしてみる
Play Framework 2.0系のプロジェクトで、リクエスト毎にログを出力するような設定をした場合、ログファイルをローテートしたくなったりします。 場合によってはlogrotateの設定でやったりもします。 が、今回は、Play Frameworkのログの設定でローテートしてみます。 Play Frameworkは、LogBackというミドルウェアを使用してログを出力します。 で、必要な設定などはすでにPlay Framework自体が設定してくれているので ログを出力するのは Logge ...
Play Framework で、リクエストログを出力したい
リクエストを受けた直後のアクションについては /app/Global.scala というオブジェクトのファイルを作り GlobalSettingsを継承します。 このGlobalSettingsというトレイトには beforeStart onStart onStop onRouteRequest onError onHandlerNotFound onBadRequest というメソッドが定義されていて、それぞれオーバーライドする事でアクションを設定する事が出来ます。 今回は、リクエストが来た時 ...
Play Framework で、SQLの実行ログもログに出力させたい場合
Play Frameworkはなんか、デフォルトで正常に動いていると、ログが少ないなと思ったりします。 正常に動いたように見えても、データがおかしいのを拾っている場合もあります。 そんな時は、どんなSQLが叩かれているのかと言うのを見たくなります。 Ruby on Railsでは、developmentモードで起動していると常にSQLの実行ログが出たりしますが Play Frameworkでは設定を追加しないと駄目なようです。 設定は application.conf に db関係の設定があると ...
Play Framework 2.0.2 で負荷をかけるとエラーが出まくる
これは、Play Framework で使用しているAkkaのデフォルト設定による物で、ボディパーサのタイムアウトが1秒に設定されています。 retrieveBodyParserTimeout = 1 second なので、負荷をかけていって、一つのリクエストが1秒を超えたあたりでタイムアウトのエラーが発生してしまいます。 そこで、Akkaの設定を追加してあげれば良いのですが、どこに追加したら良いかというと 決まりは無い感じですが confの中にあるapplication.confとか akka ...
Play Frameworkでapplication.confではなく、別の設定ファイルを読み込んで起動する設定
application.confには前環境で共通の内容を設定 prod.confには、本番環境用のみのものを設定 という感じで、本番と開発で設定を分けたいなと思います。 これを実現するには 起動時のパラメータに以下のような設定を追加することで実現出来ます。 config.resource=prod.conf このconfig.resourceというのは、Play プロジェクト内のリソースとしてのprod.confを読み込みます、という設定なので、 confディレクトリに格納しておく必要があります ...
[Scala]Play framework 2.0 のwithSessionを使うと今まで入れてたセッションが消える
APIDOCとか、Documentをみたら、分かる事ではあるが、はまりやすいので書いておく def action1 = Action { Ok.wi5hSession("test1" -> "value1") } def action2 = Action { Ok.wi5hSession("test2" -> "value2") } とした場合に action1を叩いてからaction2を叩くと セッションの情報がtest2 -> value2だけになる ...
[Scala]Play framework で使用するJVMのヒープサイズを環境変数で指定する
Scalaの開発をVMで行っているわけでありますが 素のPlay frameworkだと、色々やってるうちにメモリを浪費してしまうようです。 メモリリークでは無いけど、必要なメモリをどんどん確保してしまうみたい。 なので、ヒープの上限という意味で割り当てを指定してみます。 毎回Play起動時に指定するのは面倒なので、環境変数で。 #~/.bashrc を開いて、一番下あたりに export _JAVA_OPTIONS="-Xms256M -Xmx256M" と書き込んでターミナルを再起動します。 ...
[Scala]Play framework 2.0で、playのコンソールに入らずにアプリを実行する
Play frameworkは便利ですが、そのまま稼働させたい時などにわざわざ $> play $ start なんて打ちたくありません。 でも、playコマンドにそのままstartと引数を付けて叩くと、コマンド一発で起動する事が出来ます。 $> play start ところが、 $> play start 80 なんてやった場合に、ポートが80番にならない。 よくよく調べてみると、playコマンドに対してstartと80の引数が渡された状態のようで playはstartだけを ...
[Scala]Ubuntu11.xx上でPlay framework 2.0 for Scalaで、ImageMagick/jMagickを使ってみる
Ubuntu 11.xx上で、Play framework 2.0 for ScalaからImageMagickを使う ということで、今回のコンセプトですが cookpadにはtohuがある ぼくらにはない でもapacheのモジュールで作るのもしんどい という事で、Play framework for Scalaで作るという事なのです まずはJDKのインストール これは、 からダウンロードします。 しかし、SunがOracleに買収されたのは未だにショックです。。 というのはおいといて ダウン ...
[Scala]Play framework 2.0でプロジェクトルートのパスを取得する方法
Controllerの中などで、 Play.current.path.getPath() とする
[Scala]Play! Framework2で、Ruby on Railsのmigrationのような事
Ruby on Railsは、フルスタックで、テーブルのスキーマもリビジョン管理が出来るフレームワークですが、Play! Frameworkもそれに近い事が可能となっています。 Ruby on Railsで言うマイグレーションファイルは、Play! Frameworkでは conf/evolutionsディレクトリになります。 このディレクトリに1.sqlという感じに、連番でsqlファイルを作成すると その順番で実行時にスキーマの更新が行われます。 では、この1.sqlのファイルの中身はというと ...
[Scala]Play frameworkで作ったプロジェクトをeclipseで編集する
Play frameworkでは、eclipseでプロジェクトを開けるようにするコマンドが存在するのでその機能を使用する。 まず、作ったプロジェクトのディレクトリに移動する。 $> cd PlayScalaExample コマンドを叩く $> eclipsify これで、eclipseで読み込む準備が完了 続いてeclipse側でPlayScalaExampleをインポートします。 eclipseのworkspaceにPlayScalaExampleを移動して、eclipseのメニュ ...
[Scala]Play frameworkでHello Worldちょい手前まで
Liftを使うかPlay frameworkを使うか、というところで、悩んでいるので とりあえず、Play frameworkも試してみる。 Scalaをセットアップするのは、JDK入れて適当な場所にScalaを展開してパスを通すだけで良いので、これは省略する。 Play frameworkは 本家() からダウンロードする。 Scalaを展開したディレクトリの隣あたりにPlay frameworkを展開。 Play frameworkへのパスを通す コマンドラインで $> play と入 ...