Code Monkey home page Code Monkey logo

play2-hands-on's Introduction

Play2 + Slick / ScalikeJDBCハンズオン

Play2 + Slick / ScalikeJDBCを使ってWebアプリケーションを作成するハンズオンです。 以下のURLで公開されています。

https://bizreach-inc.github.io/play2-hands-on/

執筆者向け情報

このリポジトリをcloneし、ルートディレクトリで hugo server を実行すると http://localhost:1313/play2-hands-on/ でサーバが起動します。 また、サイトを更新する場合は hugo でdocsディレクトリにコンテンツを再生成し、pushしてください。

play2-hands-on's People

Contributors

blue0513 avatar goryudyuma avatar harry0000 avatar mado-m avatar matsutomu avatar mura-mi avatar natsumisawa avatar ryotarotemma avatar seratch avatar shimamoto avatar shintaro-tamaki avatar takezoe avatar todokr avatar winkichanwi avatar yusukemorita avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

play2-hands-on's Issues

ローカルでの `hugo server` 時にリンクが繋がらない

ローカルで hugo server を実行してもリンク先に飛べない(URL直指定だとページは表示される)
config.tomluglyurls = true となっているからローカルと本番用出力ファイルで差異があるのが原因な気がする。

過去バージョンの切り捨て

過去バージョンを全て保持していると一括置換系の時の文言確認や動作確認が大変。
かなり古いバージョンは切り捨てたい。
最新バージョン+2世代くらいあれば問題ない気がする。

コマンド実行に失敗する

https://github.com/bizreach/play2-hands-on/blob/2199cfbd1d49eb9900742c776f13bceb52159dff/docs/play2.5-scalikejdbc2.5/preparation_of_db.html#L227

当該部分のコマンドをそのまま実行したところうまくいかず、scalikejdbcGen USERS と scalikejdbcGen COMPANIES のようにコマンドを2回に分けてひとつづつモデルを生成したところうまくいきました。お手数をおかけいたしますが、もしそちらでも同じ状態が確認できた場合に修正していただければ幸いです

sbt sbt-versionコマンドが廃止され、sbt sbtVersionに変わっている

問題

ハンズオンの手順の説明で、「プロジェクトの作成」というページで登場するコマンドです。
例(play2.5-slick3.1):http://bizreach.github.io/play2-hands-on/play2.5-slick3.1/create_project.html

sbtをインストールする手順で実行するコマンドがこのように与えられています。

brew update
brew install sbt

sbt sbt-version

しかし、現在brew install sbtでインストールされるsbtのバージョン(2018/06/18現在 ver 1.1.6)ではsbt sbt-versionコマンドは廃止されており、代わりにsbt sbtVersionコマンドを使います。

解決策

ドキュメントに点在するsbt sbt-versionコマンドを全て修正するプルリクを作らせて頂きたいのですが、よろしいでしょうか?

PUT,DELETEをWebのformから送りたい

HTML の Form は GET/POST 以外をリクエストすることができません。
現状は、 POST リクエストに hidden 属性で _method パラメータを付与したり、
submit イベントを JavaScript でフックして、 Ajax で PUT/DELETE リクエストを代行する
などの方法で回避されていますが、
POSTリクエストで、リクエストヘッダに"X-HTTP-Method-Override": "PUT"で、
POSTをPUTで上書きしたりしてるのですが、Playで、RESTfulなAPIを実現するには
どのようにしてformを拡張して、PUT,DELETEを実現してるのでしょうか?
playframework/playframework#5313

Expressだと、method-overrideというライブラリで、formのmethodを_methodパラメータで上書きしています。
https://github.com/expressjs/method-override/blob/master/index.js

$.ajax({
  url: "http://localhost:10320/api/Person/4",
  type: "POST",
  data: JSON.stringify(whatever),
  headers: { 
      "Content-Type": "application/json",
      "X-HTTP-Method-Override": "PUT" },
})

playframework/playframework#2063

PLAY 2.6 + SCALIKEJDBC 3.2 の"ユーザ一覧APIの実装"->"コントローラ"のソースがエラーとなる

最後の Ok(Json.obj("users" -> users)) の箇所のimplicitが見つからないみたい?
ドキュメント通りにimport JsonController._を書いてあるがダメ。

  def list = Action { implicit request =>
    val u = Users.syntax("u")

    DB.readOnly { implicit session =>
      // ユーザのリストを取得
      val users = withSQL {
        select.from(Users as u).orderBy(u.id.asc)
      }.map(Users(u.resultName)).list.apply()

      // ユーザの一覧をJSONで返す
      Ok(Json.obj("users" -> users))
    }
  }

playframeworkテンプレートとハンズオンの想定したバージョンが異なりエラーが起きる

ハンズオンを用いて学習を進めていましたが、
2ページ目のプロジェクトの作成部分で、指示通り
sbt new playframework/play-scala-seed.g8
を実行するとバージョン2.6のテンプレートが作成されてしまいます。
このままsbt run を実行すると
abstractControllerが見つからないというエラーが発生してしまい、先に進めなくなってしまいます。

応急処置としてsbt new...を行う際に
sbt new playframework/play-scala-seed.g8 --branch 2.5.x
とバージョンを指定してプロジェクトを作成するという方法をとることでハンズオンは進めることができました。

このような事例がありましたことをご報告します。

Not working in hugo v0.58.2

In hugo v0.42.2,

$ hugo version
Hugo Static Site Generator v0.42.2 darwin/amd64 BuildDate: 2018-06-28T12:36:21Z
$ hugo

                   | EN
+------------------+----+
  Pages            | 88
  Paginator pages  |  5
  Non-page files   |  0
  Static files     | 69
  Processed images |  0
  Aliases          | 10
  Sitemaps         |  1
  Cleaned          |  0

Total in 160 ms

But, in hugo v0.58.2

$ hugo version
Hugo Static Site Generator v0.58.2/extended darwin/amd64 BuildDate: unknown
$ hugo
# terminal
Building sites … WARN 2019/09/15 10:14:22 Page's .Hugo is deprecated and will be removed in a future release. Use the global hugo function.
WARN 2019/09/15 10:14:22 Page's .RSSLink is deprecated and will be removed in a future release. Use the Output Format's link, e.g. something like:
    {{ with .OutputFormats.Get "RSS" }}{{ .RelPermalink }}{{ end }}.
WARN 2019/09/15 10:14:22 Page's .Dir is deprecated and will be removed in a future release. Use .File.Dir.
ERROR 2019/09/15 10:14:22 open /play2-hands-on/docs/play2.3-slick2.1/introduction.html: is a directory
ERROR 2019/09/15 10:14:22 open /play2-hands-on/docs/play2.5-scalikejdbc2.5/introduction.html: is a directory
ERROR 2019/09/15 10:14:22 open /play2-hands-on/docs/play2.5-slick3.1/introduction.html: is a directory
ERROR 2019/09/15 10:14:22 open /play2-hands-on/docs/play2.6-scalikejdbc3.2/introduction.html: is a directory
Total in 157 ms
Error: Error building site: failed to render pages: open /play2-hands-on/docs/play2.4-slick3.0/introduction.html: is a directory

Not working samples of `PLAY 2.6 + SCALIKEJDBC 3.2`

元ソース

def list = Action { implicit request =>
  DB.readOnly { implicit session =>
    // ユーザのリストを取得
    val users = withSQL {
      select.from(Users as u).leftJoin(Companies as c).on(u.companyId, c.id).orderBy(u.id.asc)
    }.map { rs =>
      (Users(u)(rs), rs.intOpt(c.resultName.id).map(_ => Companies(c)(rs)))
    }.list.apply()

    // 一覧画面を表示
    Ok(views.html.user.list(users))
  }
}

下記のように val u = Users.syntax("u") を追記することでコンパイルエラーは回避できました。

def list = Action { implicit request =>
val u = Users.syntax("u")

DB.readOnly { implicit session =>
    // ユーザのリストを取得
    val users = withSQL {
    select.from(Users as u).leftJoin(Companies as c).on(u.companyId, c.id).orderBy(u.id.asc)
    }.map { rs =>
    (Users(u)(rs), rs.intOpt(c.resultName.id).map(_ => Companies(c)(rs)))
    }.list.apply()

    // 一覧画面を表示
    Ok(views.html.user.list(users))
}
}

開発者用ドキュメントの充実化

各フォルダの説明や新規バージョンを追加する時などの進め方があった方が新規の協力者に優しそう。
hugoの簡単な説明なども。
WikiまたはREAD.MEなど。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.