Play framework2 の勉強(1)

Based on Web+DB vol.71

基礎知識

はじめに

  • Scalaが最近きてるよ
  • maven とか XML の複雑な設定が必要
  • そんなときのために Play FWがあるのだ

Play Flamework とは

Playの特徴

  • Hot Reload
    • war にする必要はナッシブル
    • FWが自動でリロードしてくれるんだ
  • Stateless
    • HTTPSession オブジェクトはでてきません
    • セッションはCookie,memcached,dbで管理することを推奨
    • Iaas, Paas と相性よろし
  • 型安全
    • Scalaなので、静的な検査がはいる
    • HTMLTemplateのところもはいる
    • ついでに、JS,Coffee,LESSもはいる
  • 非同期
    • 元々はc10k問題というのがあって色々戦ってた
      • c10k問題 ・・・ client が10万台いるとシステムが落ちる
    • Netty というネットワークFWを内部でもつことにした
    • Akka, Async といったのを使えば簡単に非同期処理の実装が可能

まとめ

  • 簡単で便利でいいやつなんだ!

Herokuの勉強

入門

  • HerokuはPasS
  • インフラ部分はAWSは使ってるよ
  • 元はruby
  • 開発者の生産性の向上がモットー
  • easy deploy

始める

railsを入れる

sudo gem install rails

railsでサンプルアプリを立てる

rails new heroku_app

Userテーブルを作っているのかな。多分。

rails generate scaffold User name:string

DBと連携させるとか。
>||
rails db:migrate
|

一旦rails起動

rails server

http://localhost:3000/user で確かにアクセスができた。すげーrails

ここからdeployの準備に入る
本番では Postgre使うってことらしいので、Gemfileに以下を追記。

gem 'pg', :group => :production
gem 'sqlite3', :group => :development

sqlite3はデフォルトで書いてあるのでそれをEditした形。
そんでもって、GemFileを変更したら bundle install をする必要があるらしい。

bundle install --without production

そんで、Herokuのアカウントが必要らしい。
[Herokuのサイトにいってアカウントを作る。](http://www.heroku.com/)

できたので、次にheroku用のモジュールを入れる。

sudo gem install heroku

そんで、アプリケーションを作るっぽいコマンド。Heroku上に何か登録すんのかな?

heroku apps:create

ここでなんと!こんな出力が!

!    The 'heroku' gem has been deprecated and replaced with the Heroku Toolbelt, download and install from https://toolbelt.heroku.com.

deprecated...まじか。この本10月号なのに。。一応ここのURL見てみよう。

ふむふむtoolbeltってのがあんのか。とりあえず入れる。

herokuコマンドが使えるようになるらしいね。
てことで、このタイミングで

sudo gem uninstall heroku

ってやったんだけど、どうやらtoolbeltも死んでしまったらしい。
なので2回入れました。

・・・はい、はいったー。


で、どうやら

git@heroku.com:murmuring-temple-7614.git

というのがアプリケーションのURLになるぽいです。

Herokuにデプロイする=ここにgit pushする
という意味。ふーーん。

では実際にやってみよう。

git add .; git commit; git push heroku master

色々pushしてから色々インストールしてる。すげーーって思ってたら落ちた。

-----> Launching... !     Heroku push rejected, failure releasing code
To git@heroku.com:murmuring-temple-7614.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:murmuring-temple-7614.git'

何それ。
まぁそれは置いておいて、もう1回やったらなぜかうまくいった。

-----> Launching... done, v6
       http://murmuring-temple-7614.herokuapp.com deployed to Heroku

で、Heroku上のDBのまいぐれーとをして、

heroku run rake db:migrate

そしたら http://murmuring-temple-7614.herokuapp.com/users でアクセスできるようになっている!!!

んーなるほどぉ。
確かにこれは楽ちんねー。
gitにあがったプログラムを適用&DB操作&モジュールインストール等をさくっとやってくれちゃうってことねー。