ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

SinatraでWebアプリをつくる

目次


Sinatraとは

SinatraはWebアプリをつくるためのGem。
Webアプリフレームワークといわれるシステム。
SinatraのWebサイトは次のとおり。

Sinatra
http://sinatrarb.com/

Sinatraをインストールする

手順

SinatraはGemなのでRubyGemsからインストールできる。
今回はRuby2.5.1にBundlerをつかってインストールする。
手順は次のとおり。

  1. アプリ作成用のディレクトリをつくる
  2. ターミナル/PowerShellのcdコマンドでsinatra_appディレクトリに移動する
  3. RubyGems、Bundlerの順にアップデートする
    • Bundlerをインストールしていない場合はインストールする
  4. bundle initでGemfileをつくる
  5. Sinatraをbundleインストールする


Bundlerの使い方は前に書いた記事を参照。

実際にインストールする

ターミナル/PowerShellで次の操作をする。

cdコマンドでアプリ開発用のディレクトリに移動する

今回はsinatra_appディレクトリに移動する。

cd sinatra_app


RubyGemsを最新にする

gem update --system


Bundlerを最新にする

gem update bundler

(Bundlerをインストールしていない場合はRubyGemsからインストールする)

gem install bundler


Gemfileをつくる

bundle init


GemfileにGemを追記する

gem 'sinatra'
gem 'sinatra-contrib'


Sinatra::ContribはSinatra拡張機能を使うためのGem。
今回はsinatra/reloaderを使うためにインストールする。
Sinatra::ContribのWebページは次のとおり。

Sinatra Top > DOCS > Sinatra::Contrib
http://sinatrarb.com/contrib/

SinatraSinatra::Contribをインストールする

bundle install --path vendor/bundle


(--pathオプションをつけるとディレクトリ内にGemがインストールされる)

コードを書く

sinatra_appディレクトリ内にSinatraをつかったRubyファイルをつくる。
今回はmyapp.rbというファイルをつくる。
myapp.rb

require 'sinatra'
require 'sinatra/reloader'

get '/' do
    'テストページ'
end


コードの説明

  • Sinatrasinatra/reloaderをrequireメソッドで呼び出す
    • sinatra/reloaderは書きかえたコードをスムーズに反映させるための拡張機能
  • getメソッドでブラウザに表示させる
    • '/'はURLになる
      • この場合はスラッシュのみなのでTopページになる
    • テストページと表示


コードを実行する

コードを実行する。

bundle exec ruby myapp.rb


bundle installの際、--pathオプションをつけずシステムにSinatraをインストールしていればbundle execは不要。

実行すると次のような返答がありWEBrickが立ち上がる。

[2018-05-****] INFO  WEBrick *****
[2018-05-****] INFO  ruby 2.5.1 ******
== Sinatra (v2.0.1) has taken the stage on 4567 for development with backup from WEBrick
[2018-05-****] INFO  WEBrick::HTTPServer#start: pid=**** port=4567


WEBrickはパソコンの中でWebサーバの機能を使えるようにするRubyのライブラリ。
WEBrickを使うとWebサーバを用意しなくてもWebアプリの開発ができる。
標準添付ライブラリなのでGemインストールしてrequireすれば使える。ただしSinatraにはWEBrickが組み込まれているので別途にインストールしなくても使える。
WEBrickのWebページは次のとおり。

Rubyリファレンスマニュアル
標準添付ライブラリ webrick
https://docs.ruby-lang.org/ja/latest/library/webrick.html

WEBrickが立ち上がったらブラウザを立ち上げ、URLの入力窓に次のように入力する。

http://localhost:4567


URLを入力するとSinatraアプリが実行される。
今回はテストページとブラウザに表示される。

結果

f:id:rowingfan:20180528163216p:plain

sinatra/reloaderをためす

sinatra/reloaderをためす。
次のようにコードを書きかえる。
myapp.rb

require 'sinatra'
require 'sinatra/reloader'

get '/' do
    'テストページ再'
end


コードを書きかえて保存したらブラウザのリロードボタンをクリックする。
するとテストページテストページ再に変わる。

sinatra/reloaderを使わないとコードを書きかえるたびにSinatraアプリの再起動とWEBrickの再接続が必要になる。
Webアプリを開発するときはsinatra/reloaderを使うと便利。

WEBrickを切断する

WEBrickを切断するにはターミナル/PowerShellでcontrolキーとCキーを同時に押す。

上記の操作でmacOS 10では即座に切断される。
Windows10では バッチ ジョブを終了しますか (Y/N)?と聞かれるので、 Yと入力すれば切断される。


次回はSinatraアプリをデータベースに接続する。
さらにテンプレート(Erb)を使ってブラウザに表示させる。

今回の環境

macOS 10.13.4
Windows10
ruby 2.5.1p57
RubyGems 2.7.7
Bundler 1.16.2
sinatra 2.0.1
sinatra-contrib 2.0.1