I want to be able to start my play application in test mode on Heroku is this possible?
I added this Procfile:
web: play test --http.port=$PORT $PLAY_OPTS
But when I start the server I can see this in the Hereoku logs.
←[32m2012-01-15T19:11:04+00:00 heroku[web.1]:←[0m State changed from crashed to created
←[32m2012-01-15T19:11:04+00:00 heroku[web.1]:←[0m State changed from created to starting
←[32m2012-01-15T19:11:16+00:00 heroku[web.1]:←[0m Starting process with command `play test --http.port=19429 --%prod -Dprecompiled=true
`
←[32m2012-01-15T19:11:17+00:00 app[web.1]:←[0m Listening for transport dt_socket at address: 8000
←[32m2012-01-15T19:11:18+00:00 app[web.1]:←[0m 19:11:18,040 INFO ~ Starting /app
←[32m2012-01-15T19:11:18+00:00 heroku[web.1]:←[0m Error R11 (Bad bind) -> Process bound to port 8000, should be 19429 (see environment
variable PORT)
←[32m2012-01-15T19:11:18+00:00 heroku[web.1]:←[0m Stopping process with SIGKILL
←[32m2012-01-15T19:11:18+00:00 app[web.1]:←[0m 19:11:18,048 INFO ~ Module scala is available (/app/modules/scala-0.9.1)
←[32m2012-01-15T19:11:19+00:00 heroku[web.1]:←[0m State changed from starting to crashed
←[32m2012-01-15T19:11:19+00:00 heroku[web.1]:←[0m Process exited
I guess it’s because play uses jpda.port=8000 by default and Heroku crashes with default parameters. Their documentation does not comment on test mode at all what I have seen so have anyone successfully started play in test mode on Heroku? I think I would need something like --jpda.port=$PORT2 in the procfile
An application on Heroku can only open one port (The one provided in the $PORT variable). Unfortunately this means that Play! test mode can’t open up the second port that it would need for remote debugging.