Play Framework 2.2.xのbuild.sbtにcucumberを実行するタスクを追加
背景
- Play Frameworkでjavaを使って開発している。
- UIのテストにcucumber-jvmを使っている。
- it:testでcucumberを実行している
- 開発中は特定のタグ @current のついたシナリオだけ実行したい
- play it:current とかやりたいけど、方法が分からん
- skipoleschris/xsbt-cucumber-plugin · GitHub を入れてみたが、Scalaが前提のようなので、使えない感じ
仕方がないので、タスクを作ってみた
実行方法
play cucumber
でcucumberが実行できる
play "cucumber [タグの名前]" (ex play "cucumber @current")
タグの名前を指定して実行することもできる。
build.sbtに入れ込むコード
lazy val cucumberTask = InputKey[Unit]("cucumber", "Run Cucumber tests.") cucumberTask := { val logger = streams.value.log logger.info("Running Cucumber tests.") val args: Seq[String] = Def.spaceDelimited("<arg>").parsed val cucumberOpts = args.isEmpty match { case false => "-Dcucumber.options=" + args.map("--tags " + _).mkString(" ") case true => "" } logger.info("Cucumber.Options: " + cucumberOpts) val cucumberRunner = "features.RunCucumber" val classPassArgs = (fullClasspath in Test).value.map(_.data).mkString(";") Fork.java(ForkOptions(runJVMOptions=Seq(cucumberOpts)), Seq("-cp", classPassArgs, "org.junit.runner.JUnitCore", cucumberRunner)) }
- クラスパスはfullClasspath in testを使っている
- CucumberのRunnerはコードに埋め込み
- tags以外のオプションは対応していない
自分で使う分にはここから始めればいいから十分だ。
- 引数とりたい場合はTaskKeyじゃなくて、InputKeyに突っ込む
- Def.spaceDelimited("
").parsedで引数が取れる - Fork.javaでjvmを起動できる
がポイント?
PlayFrameworkをHerokuにデプロイするまで
- Herokuでサインアップ
- HerokuのClientをインストール
- 以下のコマンドを実行して、デプロイ先を作成
heroku create [HerokuアプリのID]
- デプロイに使うgitリポジトリのURLが出力されるので、それを使って以下のコマンドを実行
git remote add heroku [URL]
- Procfileを作成。Playアプリ名には、build.sbtのnameで指定している名前を入れる。
今回はdevモードで動かしかったので%prod.application.modeを指定。
web: target/universal/stage/bin/[Playアプリ名] -Dhttp.port=${PORT} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL} -D%prod.application.mode=dev
- system.propertiesを作成 (SecureSocialを使ってるのでJava7が必要)
java.runtime.version=1.7
- Pushする (developブランチをPushする場合)
git push heroku develop:master
Pushするときに以下のメッセージが出る場合は、msysgitのインストールディレクトリにある.sshフォルダにキーを置くこと。
Heroku – Trouble with Windows and SSH Keys | Ganeshji Marwaha による。
Permission denied (publickey).
SublimeTextを入れてみる
- フォントを変える
- PackageControlを入れる
- パッケージ入れる
Play Frameworkについてのメモ
社内のコミュニティでPlay Frameworkを使ってちょっとしたアプリを作ることになったので、メモ。
Play Frameworkのインストール
Download Play Framework でZip形式のファイルをダウンロード。
適当なフォルダに解凍して終了。
パスを通しておくとよい。
Eclipseを使うための準備
Webアプリを作った後、以下のコマンドで.projectファイルを作ってくれる。
> play eclipse
Eclipseで[ファイル -> インポート -> 一般 -> 既存プロジェクトをワークスペースへ]を選択、インポートすればOK。
プラグインとして"ScalaIDE for Eclipse"をインストールしておく。
Eclipseを使ってデバッグ
Play Framework 2.0 で Eclipse を使ってデバッグする | ときどきウェブサイト構築記 を参考に。
- デバッグモードでアプリを起動する
> play debug run
- 最後に以下のようなメッセージが出力されるので、9999にあたる部分の数字を覚えておく
Listening for transport dt_socket at address: 9999
テスト
ここくらいはScalaで書いても良いんじゃないかなぁ…。無理かなぁ。
モデルのテストをJavaで書いて、コントローラーのテストをScalaで書くか。
(ちょっと考える)
PlayFramework - Play Framework (Java) の fakeApplication を使ったテストをスッキリ書く - Qiita
Play Javaでspecs2を使う
データベースにデータをロードするのにEbeanを使うのか。
Yaml何となく苦手。DBUnit+Excelさんに登場してもらおうかなぁ…。
おまけ
社内のリポジトリはSubversion。社外からアクセスするのは無理。
SubversionとGitHubを連携させればなんとかなるのかな?
Windows 8 に Rails 3.2.13 + Ruby 1.9.3 をインストールする
以前にWindowsでやろうとして死亡したんだけど、
またちょっと手を出すことになりそうなので、今どうなってるか確認。
インストール
Ruby をインストールする
http://rubyinstaller.org/downloads/ から Ruby 1.9.3-p429 をダウンロード、インストールする。
ruby --version
でバージョンの確認をする。
DevKit をインストールする
http://rubyinstaller.org/downloads/ から DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe をダウンロード、インストールする。
DevKitは解凍後、
cd [解凍したフォルダ] ruby dk.rb init ruby dk.rb install
でインストールができる。
Rails をインストールする
以下のコマンドを実行する。
gem install rails --version "3.2.13"
最後に file 'lib' not found と言う若干不安なメッセージがでているけども進む。
rails --version
でバージョンを確認。
Git for windows (msysgit) をインストールする
http://code.google.com/p/msysgit/downloads/list?q=full+installer+official+git から Git-1.8.3-preview20130601.exe をダウンロード、インストールする。
※ therubyracer のために必要。
アプリケーション作成
ガワを作る
rails new fuga --skip-test-unit --skip-bundle
fuga フォルダにアプリができる。
therubyracer のおぜん立てをする
Windows環境でtwitter-bootstrap-railsを利用する - Qiita を見ながらインストールする。
3 の Gemfile を変更するところまでやればOK。
変更点は以下。
- v8.dll, v8preparser.dll を [Rubyをインストールしたディレクトリ]\bin に入れる
とりあえず動かしてみる
bundle install --path vendor/bundle
会社ではこれの前にひと工夫いるわけだが、家からやるのであれば大丈夫。
rails server -p 3003
3003 ポートでスタート。ファイアウォールの警告がでるので接続を許可する。
http://localhost:3003/ でアクセスして、Welcome aboard が出ればOK。
シャットダウンする。CTRL+C でOK。
アプリを作る
簡単!Rails3.2を使って10分でブログアプリを構築する方法 - DQNEO起業日記 をみてもくもくと作る。
"Hello Rails"を表示するためのコントローラを作成 以降を流せばよし。
おー、できる!! 素晴らしい!!!
テストを作ってみる
あとで書き足す。前回はここでもはまったんだよなぁ。
あとこれが WindowsXP/7 でも動くかどうか…。
覚書
BlikiのURL(ページ一覧)
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?c=index
kdmsnrさんに感謝。
Agile2012 の記事まとめ
自分じゃかけないので、人のをまとめて紹介するという苦しい作戦。
Agile2012のサイト
id:wayaguchi
Agile2012 Day1 : 組織文化の分析と適用すべきアジャイル手法の選択 - kawaguti の日記 (id:wayaguchi)
Agile2012 Day2 : 基調講演: よい組織文化をスケールさせるには by ロバート・サットン - kawaguti の日記 (id:wayaguchi)
Agile2012 Day 2 : システム品質を考えるキャンバス - kawaguti の日記 (id:wayaguchi)
Agile2012 : Day 3 : プロダクトオーナーからバランスド・チームへ - kawaguti の日記 (id:wayaguchi)
個人的に興味のあるやつ
組織への適用
Agile2012 Day1 : 組織文化の分析と適用すべきアジャイル手法の選択 - kawaguti の日記 (id:wayaguchi)
Agile2012 Day2 : 基調講演: よい組織文化をスケールさせるには by ロバート・サットン - kawaguti の日記 (id:wayaguchi)
ストーリーの作り方
[8/13] インセプションデッキとストーリーの間を埋める7つの要素 – Agile2012 現地レポート(7) | ManasLink ONLINE
カンバン
[8/14] へんりっくのかんがえたさいきょうのかんばん – Agile2012 現地レポート(17) | ManasLink ONLINE
A-TDD
[8/16] A-TDD:受け入れテストを自動化する方法 – Agile2012 現地レポート(29) | ManasLink ONLINE