質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • PostgreSQL

    1129questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

  • Heroku

    940questions

    HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

  • Scala

    192questions

    ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

  • Play Framework 2

    112questions

    Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

「scala,play」herokuへのデプロイ時にエラーが出てしまう

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 227

 前提・実現したいこと

scala、playframeworkを使って作成したwebアプリケーションをherokuを用いてデプロイしようとしたところ、エラーが出てしまい、うまくいきません。

herokuを用いないかつh2を使ったローカル環境では正常に動作しています。

エラーの原因はどこにあり、どうすればエラーを解消することができるのか教えていただきたいです。

 発生している問題・エラーメッセージ

remote:        Pruning sources from previous analysis, due to incompatible CompileSetup.
remote:        /tmp/build_167204999ca2006747d425001b02dd2c/app/services/Todo.scala:5: not found: object anorm
remote:        import anorm.SqlParser._
remote:               ^
remote:        /tmp/build_167204999ca2006747d425001b02dd2c/app/services/Todo.scala:6: not found: object anorm
remote:        import anorm._
remote:               ^
remote:        /tmp/build_167204999ca2006747d425001b02dd2c/app/services/Todo.scala:7: object db is not a member of package play.api
remote:        import play.api.db.DBApi
remote:                        ^
remote:        /tmp/build_167204999ca2006747d425001b02dd2c/app/services/Todo.scala:14: not found: type DBApi
remote:        class TodoService @Inject() (dbapi: DBApi) {
remote:                                            ^
remote:        /tmp/build_167204999ca2006747d425001b02dd2c/app/services/Todo.scala:19: not found: value get
remote:            get[Option[Long]]("todo.id") ~
remote:            ^
remote:        /tmp/build_167204999ca2006747d425001b02dd2c/app/services/Todo.scala:20: not found: value get
remote:              get[String]("todo.name") map {
remote:              ^
remote:        /tmp/build_167204999ca2006747d425001b02dd2c/app/services/Todo.scala:21: not found: value ~
remote:              case id~name => Todo(id, name)
remote:                     ^
remote:        7 errors found
remote:        :compilePlayBinaryScala FAILED
remote:        
remote:        FAILURE: Build failed with an exception.
remote:        
remote:        * What went wrong:
remote:        Execution failed for task ':compilePlayBinaryScala'.
remote:        > Compilation failed
remote:        
remote:        * Try:
remote:        Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
remote:        
remote:        * Get more help at https://help.gradle.org
remote:        
remote:        BUILD FAILED in 59s
remote:        4 actionable tasks: 4 executed

 該当のソースコード

「Todo.scala」

package services

import javax.inject.Inject

import anorm.SqlParser._
import anorm._
import play.api.db.DBApi

import scala.language.postfixOps

case class Todo(id:Option[Long], name: String)

@javax.inject.Singleton
class TodoService @Inject() (dbapi: DBApi) {

  private val db = dbapi.database("default")

  val simple = {
    get[Option[Long]]("todo.id") ~
      get[String]("todo.name") map {
      case id~name => Todo(id, name)
    }
  }

  def list(): Seq[Todo] = {

    db.withConnection { implicit connection =>

      SQL(
        """
          select * from todo
        """
      ).as(simple *)

    }

  }

  def insert(todo: Todo) = {
    db.withConnection { implicit connection =>
      SQL(
        """
        insert into todo values ((select next value for todo_seq), {name})
        """
      ).on(
        'name -> todo.name
      ).executeUpdate()
    }
  }

  def findById(id: Long): Option[Todo] = {
    db.withConnection { implicit connection =>
      SQL("select * from todo where id = {id}").on('id -> id).as(simple.singleOpt)
    }
  }

  def update(id: Long, todo: Todo) = {
    db.withConnection { implicit connection =>
      SQL(
        """
          update todo
          set name = {name}
          where id = {id}
        """
      ).on(
        'id -> id,
        'name -> todo.name
      ).executeUpdate()
    }
  }

  def delete(id: Long) = {
    db.withConnection { implicit connection =>
      SQL("delete from todo where id = {id}").on('id -> id).executeUpdate()
    }
  }

}

 試したこと

dbにh2を利用していたことが原因かと考えherokuのpostgreSQLに移行(初の試みのため正常に接続できているかは不明)したが、エラーメッセージに変化なし。

anormが導入されていないのかとbuild.sbtを確認するが、

libraryDependencies += "com.typesafe.play" %% "anorm" % "2.5.3"


の記述はなされている。

 補足情報(FW/ツールのバージョンなど)

環境
scala 3.1.2
java 8
anorm 2.5.3

build.sbt

scalaVersion := "2.12.4"

libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "3.1.2" % Test
libraryDependencies += jdbc
libraryDependencies += evolutions
libraryDependencies += "com.typesafe.play" %% "anorm" % "2.5.3"
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • mather

    2018/05/22 19:15 編集

    こちらは読みましたか? https://devcenter.heroku.com/articles/deploying-scala project/plugins.sbt の記述も確認したいです。

    キャンセル

  • tktcorporation

    2018/05/31 21:04 編集

    回答ありがとうございます。返信が遅れてしまってすみません。 herokuのドキュメントは一応確認済みです。 https://github.com/tktcorporation/play-dbこちらがコードになります。 データベースなどを使わない簡単なもののデプロイには成功しました。 そのコードはこちらになります。https://github.com/tktcorporation/heroku_test/blob/master/app/views/index.scala.html

    キャンセル

まだ回答がついていません

同じタグがついた質問を見る

  • PostgreSQL

    1129questions

    PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

  • Heroku

    940questions

    HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

  • Scala

    192questions

    ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

  • Play Framework 2

    112questions

    Play Framework 2はPlayのメジャーバージョンです。現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。