#はじめに
謝罪
####遅れてしまって大変申し訳ありません
この記事は、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
下記のようなファイルを用意します。
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
を以下のように書き変えます。
require 'sinatra'
set :bind, '0.0.0.0'
get '/' do
@world = 'World' # erbファイルで使う変数
erb :hello # hello.erbを呼び出す
end
次に、hello.rb
と同じ階層にviews
というディレクトリを作ります。
そしてviews
の中に以下のファイルを用意します。
<!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ファイルについて簡単に紹介しました。
ところどころ、この表現正しいのかな?とか考えながら書いてましたので、間違えてる場所もあるんじゃないかと思いますので、指摘していただけるとありがたいです。