Skip to content
shunter1112 edited this page Aug 24, 2013 · 1 revision

HerokuのCedarスタックはあらゆるタイプのScalaアプリケーションを実行することができます。

このドキュメントはScalaアプリケーションの検知と実行に関係する、Cedarスタックの一般的な振る舞いについて説明します。アプリケーションのデプロイ方法の更なる詳細な説明を確認する場合は、以下をご覧ください :

Heroku/Cedar上でScalaを使って始めよう

アクティベーション

Scalaアプリケーションはファイルが以下のパターンにマッチするファイルが検出された時に、認識されます :

  • /*.sbt
  • /project/*.scala
  • /project/build.properties
  • /.sbt/*.scala

デプロイされたアプリケーションがScalaアプリケーションと認識された時、Herokuは-----> Scala app detectedと表示します。

:::term
$ git push heroku master
-----> Scala app detected

もしアプリケーションが/conf/application.confファイルも含んでいた場合、Play 2.0アプリケーションが検知され、-----> Play 2.0 app detectedと表示します。更に情報を確認する場合はHeroku Play Supportの記事を見てください。

Mavenを使ったScalaアプリケーションも同様にデプロイできますが、Javaアプリケーションとして扱われます。そのため、Heroku Java Support が適応されます。

環境

以下の環境変数が設定されます :

  • PATH: .sbt_home/bin:/usr/local/bin:/usr/bin:/bin
  • JAVA_OPTS: -Xmx384m -Xss512k -XX:+UseCompressedOops
  • SBT_OPTS: -Xmx384m -Xss512k -XX:+UseCompressedOops
  • REPO: /app/.sbt_home/.ivy2/cache
  • PORT: WebプロセスがバインドされるHTTPポート
  • DATABASE_URL: Heroku Postgres データベースの接続用のURL

ビルド時の振る舞い

アプリケーションは、SBTのリリースバージョン0.11.0 - 0.12.3が指定されているsbt.versionプロパティを持つ/project/build.propertiesファイルを含んでいる必要があります。SBTのRC版はサポートされません。

HerokuのScalaビルドパックはアプリケーションをビルドするために、sbt clean compile stageを実行します。アプリケーションが適切に実行されるために準備する必要がある様々な仕事を行うstageタスクを、アプリケーションは含んでいる必要があります。例えば、Typesafeのxbst-start-script-pluginはアプリケーションの開始スクリプトを生成するstageタスクをSBTに追加します。プラグインを使うために、以下を含んだ/project/build.sbtファイルを作成します :

resolvers += Classpaths.typesafeResolver

addSbtPlugin("com.typesafe.startscript" % "xsbt-start-script-plugin" % "0.5.1")

実行時の振る舞い

デフォルトでは、Scalaアプリケーションはxbst-start-script-pluginによって生成された開始スクリプトと共に起動されます :

web: target/start -Dhttp.port=$PORT $JAVA_OPTS

もしアプリケーションがxbst-start-script-pluginを使っていないか、別の方法で起動する必要がある場合、Webプロセスを開始させる別の方法を明示した、カスタマイズされたProcfileをあなたのプロジェクトのルートに含める事が出来ます。

JVMのバージョン

デフォルトでは、OpenJDK 1.6がインストールされています。ですが、system.propertiesファイルの中にjava.runtime.version=1.7と明示することで、新しいJDKを使う事を選ぶこともできます。

ここにsystem.propertiesファイルがどのような見た目になるかを示します :

:::term
java.runtime.version=1.7

Java6,7,または8(ラムダ関数があります)に対して、1.6, 1.7, または1.8(1.8はベータです)をそれぞれ明示できます。

あなたのアプリケーションが使うJDKはSlugの中に含まれ、Slugのサイズに影響をします。

アドオン

HerokuのPostgresスターター向けデータベースアドオンが、Scalaアプリケーションには自動で配備されます。これはDATABASE_URL環境変数を生成します。

Clone this wiki locally