Ruby + Sinatra で web アプリケーション
Sinatra
web アプリって何かよくわからなかったので、Sinatra に入門。
https://sinatrarb.com/intro-ja.html
web アプリ
web サーバーを起ちあげて、ブラウザでアクセスして何らかの処理をしたりしなかったりするものを web アプリと呼ぶようだ。
処理をしたりしなかったりする部分をフレームワークで、決まりきったパターンでプログラムを書けるというジャンルにあり、そのなかでもシンプルなのが Sinatra らしい。
python だと cherrypy と似ているのかもしれない。
web アプリを作ってみる
"webrick" "sinatra" を使って、もっとも単純な処理をする web アプリを作ってみる。もっとも単純な処理だから、基本的にとても短いコードになるので概要をつかむのにはいいはずだ。
所要時間: ゆっくりやってみて 30 分程度。
プロジェクトのディレクトリを作る。
bundler のインストール。
bundler
https://github.com/rubygems/bundler
プロジェクトのディレクトリに移動。
Gemfile が作られる。
Gemfile を編集する。
"webrick" と "sinatra" がインストールされる。この二つが依存しているプログラムも同時にインストールされる。
WEBrick
https://docs.ruby-lang.org/ja/latest/library/webrick.html
要約
汎用HTTPサーバーフレームワークです。HTTPサーバが簡単に作れます。
WEBrick はサーブレットによって機能します。サーブレットとはサーバの機能をオブジェクト化したものです。ファイルを読み込んで返す・forkしてスクリプトを実行する・テンプレートを適用するなど、「サーバが行なっている様々なこと」を抽象化しオブジェクトにしたものがサーブレットです。サーブレットは WEBrick::HTTPServlet::AbstractServlet のサブクラスのインスタンスとして実装されます。
WEBrick はセッション管理の機能を提供しません。
NOTE: WEBrick は Ruby 3.0 で標準ライブラリから削除されました。Ruby 3.0 以降で WEBrick を使いたい場合は rubygems から利用してください。
views ディレクトリを作る。
hello.rb, layout.erb, index.erb
3 つファイルを作る。
ファイルはこういう階層で配置されます。
準備できたので、hello.rb を実行したい。bundle exec ruby hello.rb
で WEBrick ウェブサーバーをたちあげる。
chrome ブラウザーでアクセスする。localhost:4567
とアドレスバーに入力して Enter
キー。
どうなっているか見ていくと、
hello.rb の '/' の指し示すのは localhost へアクセスしてきた場合、それはすなわち 127.0.0.0/
で、index.html に相当するファイルへのアクセスということになる。
すると、そこに get でアクセスしてきたら、erb : index を返しますと定義している。
:index
とは、layout.erb でひな型を用意されているものに、index.erb で用意されている内容が埋め込まれたもののようだ。
layout.erb のなかの
が、index.erb の
に置き換わっているものが :index
にあたる。
HelloWorld/hello.rb
HelloWorld/views/layout.erb
HelloWorld/views/index.erb