Ray - Roy on Play
This week I worked on a Play 2.0 plugin that automatically compiles Roy files. I’ve named the plugin ‘Ray’.
With Ray enabled in your application, you can write a plain .roy
file and place it in the app/assets/javascripts directory:

You can then include it in your page like a normal .js asset:
<script src="@routes.Assets.at("javascripts/main.js")"></script>
Any compile errors will be shown when the page is requested:

Change to your editor to fix up the error:

Then refresh the page to have working JavaScript:

Download Ray from GitHub or Bitbucket.
I couldn’t find any prior Play 2.0 plugins so a lot of this was trial and error. In the end, I needed to make this an SBT plugin that is put into the Play 2.0 local Ivy repository.
These were main lines in the build.sbt file:
sbtPlugin := true
addSbtPlugin("play" % "sbt-plugin" % playVersion)
publishTo := Some(playRepository)
publishMavenStyle := false
The playRepository and playVersion values are calculated from
environment variables given on the command line:
sbt -Dplay.path=../play-2.0-RC3 -Dplay.version=2.0-RC3 publish
Then the plugin can be added in the application’s plugins.sbt:
addSbtPlugin("org.brianmckenna" % "ray" % "0.1")
And then imported in the application’s Build.scala:
import org.brianmckenna.ray.RoyBuild
Then your Play 2.0 plugin can add resource generators or other build changes.