このエントリーをはてなブックマークに追加

Ratpackについて(延長戦)

はじめに

G*Advent Calendar(Groovy,Grails,Gradle,Spock...) Advent Calendar 2014Ratpack についての紹介をしました。

テスティングフレームワークや、CircleCI、Heroku buttonについての紹介もしてみたいと思います。

Ratpackのテスティングフレームワーク

http://www.ratpack.io/manual/current/testing.html

http://www.ratpack.io/manual/current/groovy.html#testing

Ratpackには、UnitTest, GroovyUnitTest, ApplicationUnderTest のようにテスト用のヘルパークラスが用意されています。

使い方は、TestHttpClient を参考にしてください。

テストヘルパーを組み合わせる事で、定型的なセットアップも簡単に記述することが出来ます。

また、Geb と組み合わることで簡単に Selenium WebDriver を使ったテストを書くことが出来ます。

RemoteControlModule を使うと Groovy Remote Control を呼ぶことが出来るので、テストに必要なデータなどを予め登録することが出来ます。

CircleCI

https://circleci.com/

最近では、CIのサービスが増えており、Travis CI 以外の選択肢も選べるようになってきました。

Ratpack本体は、ビルドパイプラインが特徴的な Snap CI を利用しているみたいです。

publicなレポジトリでも利用できるようになったCircleCIが注目されているので、Ratpackで使える設定をしてみます。

その他のGradleを使ったWebアプリケーションのプロジェクトにも応用できると思います。

まず、GitHubのレポジトリの SettingsWebhooks & Services を選びます。

次に、Add Service から CircleCI を追加します。

circle.ymlが無くてもCircleCI側でいろいろ空気を読んでくれますが、Ratpackでは、Java8とGradle2.xを使う関係上、circle.ymlを追加する必要があります。

circle.ymlの書き方は、 Sample circle.yml file を参考にしてください。

以下の様にすると、postgresqlでのテスト、Herokuへのdeployが出来るようになります。

Herokuへdeployする為には、予めCircleCIの Project Settings から Continuous Deployment のHerokuにてデプロイする為の設定を行う必要があります。

machine:
  java:
    version: oraclejdk8
  timezone:
    Asia/Tokyo
  environment:
    DATABASE_URL: postgres://ubuntu:@127.0.0.1:5432/circle_test

dependencies:
  override:
    - ./gradlew dependencies

  cache_directories:
    - "~/.gradle"

test:
  override:
    - ./gradlew test

deployment:
  staging:
    branch: master
      heroku:
      appname: foo-bar-123

Heroku buttonについて

Creating a ‘Deploy to Heroku’ Button

Herokuには、自分のレポジトリのコードを他の人がHeroku上で利用できるようにする Heroku Button を提供する機能があります。

折角なので、今回のサンプルプロジェクトを対応させてみます。

手順は、以下の通りです。

  • app.json ファイルをプロジェクトの直下に設置する。
  • READMEにボタンを設置する。

app.jsonの内容については、app.json Schema を参考にしてください。

とはいえ、人の手で書いていくには少し骨が折れる作業なので、app.json を利用して作ってしまいましょう。

app.jsonを使うにはnode.jsをインストールしておく必要があります。

あと、herokuのgitの設定によっては失敗するかもしれません。 その際は、.git/config のherokuのurlを確認してください。必要に応じて修正する必要があります。

READMEには、以下の様にするとボタンを設置する事が出来ます。

ボタンは、こんな感じです。

Deploy

まとめ

以前に比べてアプリケーションを動かす環境やCIと連携できるサービスが簡単になってきました。

Gradleやモダンなフレームワークを利用することで、JavaやGroovyでもアプリケーションサーバを用意せずに使えたり、組み込みにすることでポータビリティを上げられています。

Ratpack以外にも、JavaやGroovyのWebアプリケーションをHerokuへのデプロイやCIサービスとの連携が出来ると思いますので、試してみてはいかがでしょうか。

このエントリーをはてなブックマークに追加