SinatraでWebアプリをつくる
目次
Sinatraとは
SinatraはWebアプリをつくるためのGem。
Webアプリフレームワークといわれるシステム。
SinatraのWebサイトは次のとおり。
Sinatra
http://sinatrarb.com/
Sinatraをインストールする
手順
SinatraはGemなのでRubyGemsからインストールできる。
今回はRuby2.5.1にBundlerをつかってインストールする。
手順は次のとおり。
- アプリ作成用のディレクトリをつくる
- ターミナル/PowerShellのcdコマンドでsinatra_appディレクトリに移動する
- RubyGems、Bundlerの順にアップデートする
- Bundlerをインストールしていない場合はインストールする
- bundle initでGemfileをつくる
- Sinatraをbundleインストールする
Bundlerの使い方は前に書いた記事を参照。
実際にインストールする
ターミナル/PowerShellで次の操作をする。
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/
SinatraとSinatra::Contribをインストールする
bundle install --path vendor/bundle
(--pathオプションをつけるとディレクトリ内にGemがインストールされる)
コードを書く
sinatra_appディレクトリ内にSinatraをつかったRubyファイルをつくる。
今回はmyapp.rbというファイルをつくる。
myapp.rb
require 'sinatra' require 'sinatra/reloader' get '/' do 'テストページ' end
コードの説明
- Sinatraとsinatra/reloaderをrequireメソッドで呼び出す
- 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アプリが実行される。
今回はテストページ
とブラウザに表示される。
結果
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