LoginSignup
2
2

More than 5 years have passed since last update.

Sinatraを簡単に紹介

Posted at

はじめに

謝罪

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

この記事は、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ファイルについて簡単に紹介しました。
ところどころ、この表現正しいのかな?とか考えながら書いてましたので、間違えてる場所もあるんじゃないかと思いますので、指摘していただけるとありがたいです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2