Sinatraを簡単に紹介

  • 1
    いいね
  • 0
    コメント

はじめに

謝罪

遅れてしまって大変申し訳ありません

この記事は、SLP_KBIT Advent Calendar 2016 - Qiitaの21日目の記事です。
SLP_KBITその2 Advent Calendar 2016 - Qiitaの20日目にも、記事を書いていますので、良かったらそちらも読んでくださいな。

今日(執筆開始日)は12月23日です。この記事は12月21日用の記事です。
反省してます。

今回はSinatraで簡単にWebページ表示しようかなって思います。
サーバ上で行っていると思ってください。
なんとなくしか理解できていないので、間違ってたら指摘していただけると嬉しいです。

Sinatraとは

Sinatraは軽量なWebアプリケーションフレームワークです。
「Railsむずそう」とか、「ちょっとしたことしかしない」って時にいいんじゃないかと思います。

適当に好きなディレクトリ作って
$ bundle init
すると Gemfile なるものが出来上がってると思いますので
gem 'sinatra'
を書き加えます。

$ bundle install --path vendor/bundle
を実行してgemをインストールします。

とりあえず Hello World

下記のようなファイルを用意します。

hello.rb
require 'sinatra'
set :bind, '0.0.0.0'

get '/' do
  'Hello World'
end

Sinatraはデフォルトでローカルホストからのアクセスしか受け付けないので
set :bind, '0.0.0.0' を書く必要があります。

bundle exec ruby hello.rb で実行します。
デフォルトでは4567番ポートで実行されます。
pオプションをつけてポート番号を指定して実行することもできます。

ブラウザで
http://サーバのIPアドレス:ポート番号
にアクセスすればHello Worldと表示されていると思います。

ローカルでポートの指定をせずに実行している場合は
http://localhost:4567
にアクセスすればいいです。

Hello Worldと出力されていると思います。

erbファイルを使う

erbファイルというものがあります。これは、htmlファイルの中にRubyのコードを埋め込んだようなものです。(あってるのかな?)
まず先ほどのhello.rbを以下のように書き変えます。

hello.rb
require 'sinatra'
set :bind, '0.0.0.0'

get '/' do
  @world = 'World'    # erbファイルで使う変数
  erb :hello    # hello.erbを呼び出す
end

次に、hello.rbと同じ階層にviewsというディレクトリを作ります。
そしてviewsの中に以下のファイルを用意します。

hello.erb
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello World</title>
  </head>
  <body>
    <p>Hello <%= @world %></p>
  </body>
</html>

インスタンス変数を用意することで、erbファイルに変数を渡すことができます。
erbファイルでは<%= %>の中で書かれた部分はRubyのコードとして実行し出力します。制御構文など、出力をしない部分は<% %>で囲みます。
先ほどと同様にブラウザでアクセスすると@worldの部分が展開され、Worldになって出力されているはずです。

最後に

Sinatraとerbファイルについて簡単に紹介しました。
ところどころ、この表現正しいのかな?とか考えながら書いてましたので、間違えてる場所もあるんじゃないかと思いますので、指摘していただけるとありがたいです。

この投稿は SLP_KBIT Advent Calendar 201621日目の記事です。