今まではブログに書いていましたがこれからはQiitaに書いていきます。
ナンバリングは3.0+1.0までやったので今回からは普通に戻します。
Sinatraとは
Ruby製のWebアプリケーションフレームワーク。
特徴はRailsのようなフルスタックなフレームワークとは異なり、
ルーティングのみ制御するフレームワークです。
なので、フレームワークの知識はフルスタックなフレームワークと
比べて少なくすみます。
まずは、Sinatraをインストールしていきます。
インストール
インストールするのはsinatra
本体と
sinatraの拡張機能がまとまったsinatra-contrib
です。
$ sudo gem install sinatra sinatra-contrib
HelloWorldしてみる
app.rb
を用意し、以下のように記述します。
#!/usr/bin/env ruby
# encoding: utf-8
require 'sinatra'
get '/' do
'Hello, world!'
end
記述したらいつもどおり実行してみます。
$ ruby app.rb
これで、Webサーバが起動するのでhttp://localhost:4567
にアクセスするとHello, World!
と表示されます。
ちなみに、トップレベルに記述するのをClassic Style
といいます。
逆にクラスを作成して記述するのをModular Style
と呼びます
。
Modular Styleで記述した場合のコードは以下のようになります。
require 'sinatra'
class Hello < Sinatra::Base
get '/' do
'Hello, world!'
end
end
Hello.run!
テンプレートを使ってHelloWorldする
今のままでは表示する内容をアプリケーションのコードに書いていますが
これでは使いづらいです。
ですので、表示する内容を別ファイルにわけます。
app.rb
と同じ階層にviews/hello.erb
ファイルを用意します。
このerbというのはhtmlへrubyのスクリプトを埋め込めるテンプレートになります。
views/hello.erb
の中身は以下の通りになります。
<!DOCTYPE html>
<html lang="ja">
<head>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
次は'app.rb'を変更します。
require 'sinatra'
class Hello < Sinatra::Base
get '/' do
erb :hello
end
end
Hello.run!
今まで表示内容を直接記述していた位置にerbメソッドを記述し、
呼び出すファイルをシンボルで指定します。
これで再度rubyを実行すると、テンプレートを読み込んで出力してくれます。
アプリケーションから表示内容を埋め込む
Hello,World!
の記述をアプリケーションから指定できるようにします。
views/hello.erb
<!DOCTYPE html>
<html lang="ja">
<head>
</head>
<body>
<h1><%= @hello %></h1>
</body>
</html>
app.rb
は以下の通り
require 'sinatra'
class Hello < Sinatra::Base
get '/' do
@hello = 'Hello, Hello World!'
erb :hello
end
end
Hello.run!
インスタンス変数に出力した文字列を書き、
テンプレートファイルには<%= %>
の形式でインスタンス変数を指定します。
これで再度実行するとインスタンス変数に指定した文字列が出力されます。
今日はここまで。
明日はリクエストのパスによって処理を変更するところを書きます。