Railsの前にSinatraをやろう #1

Fjord Boot Campに参加して早半年。Rubyの基礎学習が終わり、今日からいよいよWebアプリに入る。

強力なフレームワークであるRailsの前に、Sinatraという比較的軽量なフレームワークを利用してメモアプリを作る課題。

課題の答えは書けないが、Sinatraの始め方をメモ。

Sinatraの始め方

こちらのページがわかりやすい。

qiita.com

erbは、Embedded RuByの略で、HTMLにRubyを埋め込む技術のことらしい。(参考:eRuby - Wikipedia

Sinatraのインストール

まず、適当なディレクトリを作成。

$ mkdir sinatra

作ったディレクトリに移動し、

$ bundle init

Gemfileができるので、そのGemfileに下記を追記。

gem "sinatra"

Sitatraをインストールする。

$ bundle add sinatra --skip-install

$ bundle install

アプリ作成

rbファイルを作成。例:test.rb

require "sinatra"

get "/" do
  "Hello world!"
end

Sinatraを起動する。

$ bundle exec ruby test.rb

Sinatraを起動している状態で下記にアクセスすると、ページを表示できる。

http://localhost:4567

簡単でびっくり。

リロードで変更を反映できるようにする

これで一応アプリの土台ができたが、test.rbを変更してページをリロード(再読み込み)しても、変更は反映されない。変更を反映させるためには、Sinatraを再起動する必要がある。

変更のたびに再起動させるのは面倒なので、gemを使う。Sinatraを一旦停止して、Gemfileに下記を追記。

gem "sinatra-contrib"

インストール。

$ bundle install

test.rb に require "sinatra/reloader"を追記して読み込む。

require "sinatra"
require "sinatra/reloader"

get "/" do
  "Hello world!"
end

あらためてSinatraを起動する。以降はリロードで変更が反映できるようになる。

ルーティング

get以外にも以下のようなメソッドが使える。

get '/' do
  .. 何か見せる ..
end

post '/' do
  .. 何か生成する ..
end

put '/' do
  .. 何か更新する ..
end

patch '/' do
  .. 何か修正する ..
end

delete '/' do
  .. 何か削除する ..
end

options '/' do
  .. 何か満たす ..
end

link '/' do
  .. 何かリンクを張る ..
end

unlink '/' do
  .. 何かアンリンクする ..
end

sinatra/README.ja.md at master · sinatra/sinatra · GitHub

require "sinatra"
require "sinatra/reloader"

get "/" do
  "Hello world!"
end

get "/user/:name" do
  "User Name #{params[:name]}"
end

get "/hello/*" do |name|
  "Hello #{name}. How are you?"
end

get "/foo/bar" do
  "/foo/bar page!"
end

なんでもできちゃいそう!