picture

Cloud Foundry で Scalatra アプリを実行してみます。 Scalatra 自体については、ググってください。 :-P

  1. ~~sbtをインストール インストール方法は、Mac で Scala と Lift を使ってみる(1) インストール編に記載した通りです。 Linuxならばapt-getやyum等でインストールできるかもしれません。 Windowsはわかりませんw~~ 下記のgit cloneでsbtも取得できるので不要
  2. sbtアプリ作成&テスト実行 Quick start (SBT 0.7.x)に書かれている方法を実行します。

    $ git clone git://github.com/scalatra/scalatra-sbt-prototype.git my-app
    $ cd my-app
    $ ./sbt
    > update
    > jetty-run
    > ~prepare-webapp
    

    で、あとは、http://localhost:8080/ へアクセスすれば、上記の様な画面が表示されると思います。

  3. Cloud Foundryへpush

    $ sbt package
    $ vmc push --path target/scala_2.8.1
    Application Name: 好きなアプリケーション名を入力
    Application Deployed URL: 'アプリケーション名.cloudfoundry.com'?
    Detected a Java Web Application, is this correct? [Yn]:
    Memory Reservation [Default:512M] (64M, 128M, 256M, 512M or 1G)
    Creating Application: OK
    Would you like to bind any services to '好きなアプリケーション名'? [yN]:
    Uploading Application:
      Checking for available resources: OK
      Processing resources: OK
      Packing application: OK
      Uploading (9K): OK
    Push Status: OK
    Staging Application: OK
    Starting Application: OK
    

    とすれば、warファイルが作成され、Cloud Foundryへpushできますが、 1点注意点があります。デフォルトでは、scala-compiler.jarがwarファイルに含まれないらしく、 このwarファイルをvmc pushしても実行時にエラーとなります。 http://d.hatena.ne.jp/fits/20110521/1305942644 というわけで、以下の修正を加えた後、

    $ git diff
    diff --git a/project/build/MyProject.scala b/project/build/MyProject.scala
    index 0b8e9e0..c5fc24a 100644
    --- a/project/build/MyProject.scala
    +++ b/project/build/MyProject.scala
    @@ -15,6 +15,9 @@ class MyProject(info: ProjectInfo) extends DefaultWebProject(info) {
       // http://groups.google.com/group/simple-build-tool/msg/1f17b43807d06cda
       override def testClasspath = super.testClasspath +++ buildCompilerJar
    
    +  // http://d.hatena.ne.jp/fits/20110521/1305942644
    +  override def webappClasspath = super.webappClasspath +++ buildCompilerJar
    +
       val sonatypeNexusSnapshots = "Sonatype Nexus Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
       // For Scalate
       val fuseSourceSnapshots = "FuseSource Snapshot Repository" at "http://repo.fusesource.com/nexus/content/repositories/snapshots"
    
    $ vmc push
    

    します。

  4. Cloud Foundryで動作確認 http://好きなアプリケーション名.cloudfoundry.com/へアクセスし、 「hello to Scalate」リンクをクリックして、以下の画面が表示されれば成功です。

    picture



Comments

comments powered by Disqus