heroku + sinatra で form
こんばんは。麺処まつば副店長です。
本日の麺処まつばのまかないは、天ぷらうどんでした。
さて、前回のメニューは Hello world だったので
今回は、フォームから hello world って入れてもらう事とします。
ということで、今回のメニューは、「"hello world"って言えよ」アプリ。
\なんだそりゃ/
ツッコミありがとうございます(ひとり上手)
フォームから送信された文字列が
「hello world」という文字列かどうかを判定。
「hello world」じゃなかったら「"hello world"って言えよ」
ってふてくされたメッセージが表示されます。ただそれだけです。
作り方はこんな感じです
- appの作成
- viewsの作成
- 動作確認
- 試食会
appの作成
まずは、/にGETしたときとPOSTしたときのロジックを書きます。
GETのときは、viewの指定するだけ。
POSTのときは、paramsの中のstrの値を判定して
表示するメッセージを決定しています。
app.rb
#coding:utf-8 require 'rubygems' require 'sinatra' require 'haml' configure :production do end get '/' do haml :index end # end [post /] post '/' do # 表示するメッセージのデフォルト値 @message = "はい、こんにちは" # もし、送信された文字列が「hello world」じゃなかったらふてくされます @message = "\"hello world\"って言えよ" unless params[:str] == "hello world" haml :index end # end [post /]
viewの作成
ブラウザから文字列を送信するためのviewsを用意します。
sinatra で使えるやつは色々あるみたいですが
(→http://www.sinatrarb.com/intro-jp.html)
ここでは、haml使ってみようと思います。
あ、haml入れてない場合は用意しといてくださいね。
(→http://haml.ursm.jp/)
$ gem install haml
views/index.haml
!!! XML !!! %html %head %meta{ :content=>"text/html", :charset=>"utf-8" } %title hello worldだよ %body #main %h1 hello worldだよ %div hello worldって入力してね # 入力フォーム部 %form{:action=>"/", :method=>"post"} %input{:type=>"texfield",:name=>"str"} %input{:type=>"submit", :value=>"send"} # 送信された文字列に応じて表示するメッセージ %div= @message
動作確認
それでは、ここまで作ったやつを動かしてみましょう
おっと、その前に。Gemfile に haml 使いますよ宣言しましょう。
3行目におもむろに追加です。
Gemfile
source :rubygems gem 'sinatra' gem 'haml'
そして起動
$ rackup
→http://localhost:9292/ につないでみましょう。
GETにて表示されたフォームで、
「hello world」って入力すると気持ちよく挨拶を返してくれて、
違う文字列を入力して、ふてくされたら成功です。
→成功しました。
試食会
それでは、このくだらない代物を heroku にアップしてみましょう
$ bundle install $ git add views/ $ git commit -a -m 'say <hello world>' $ git push heroku master $ heroku open
動作確認の時と同じように、ふてくされたら成功。
あ。ふてくされた。成功しました。
それでは、次回は heroku でDBを使うトコロをやってみようと思います。