SinatraでWebの基本を学ぶ
今回は Sinatra を使って Web の基本を学びます!
Ruby on Rails は機能が多いので、Sinatra からのほうが入りやすいそうです。
目次
1.Sinatraインストール
まず Sinatra をインストールをします。
$ gem install sinatra
同様に、関連 gem もインストールしておきます。
$ gem install sinatra-contrib
$ gem install activerecord
私は既にインストール済みですが、sqlite3
を未インストールの場合ここでインストールしておいたほうが良さそうです😐
2.ディレクトリの作成
ここからは以下のサイトを参考に進めていきます!
まずディレクトリを作成します。ここではディレクトリ名はsinatra_sample
とします。
作成したディレクトリに移動して、bundle init
を実行します。これにより bundler が使えるようになり、Gemfile
というファイルが作成されます💡
Gemfile
内には既に数行書かれていますが、以下の1文を追加します。
gem 'sinatra'
続いてgemのインストールを行います💪
3.アプリケーションの作成と起動
試しにRubyファイルを作成します。ファイル名はapp.rb
にします。
中身は以下のように書きます✍️
書けたら、bundler で実行します。
bundle exec ruby app.rb
となります!
この状態でlocalhost:4567に接続すると、hello
という文字が現れます✨
ローカルホストなのでブログリンクから飛んでも表示されませんが💦
こんなふうになります。
4.sinatra reloader
app.rb
の内容を変更してブラウザを再読み込みしても、変更が反映されません。
変更を反映するには、sinatraを再起動する必要があります。
そこで再起動を簡単にするために、 sinatra reloader をインストールします!
まず起動中のアプリを閉じ、Gemfile
に以下を追加します。
gem 'sinatra-contrib'
追加したら先程と同じく$ bundle install
を実行します。
次にapp.rb
を編集します。
再びbundle exec ruby app.rb
を実行すると、localhost:4567
は以下の画面になります!
今後はブラウザの再読み込みで変更が反映されます🎉
5.動かしてみる
先程のapp.rb
のコードに3行追加します。path/to
とか書いてあるあたりです。
ルーティングを追加しています。
この状態だと、localhost:4567/path/to
が以下のように表示されます🙂
次に、静的ファイルを追加します。
ルートディレクトリ配下にpublic
ディレクトリを作成します。
その中にthis is html file.
と書かれたtest.html
ファイルを作成します。
この状態でlocalhost:4567/test.html
を開くと以下のようになっています👀
更にapp.rb
に3行追加します。
この場合、*
がワイルドカードで任意の文字列が入ります。
なのでlocalhost:4567/hello/sayaka
にアクセスすると、以下のようになります!
sayaka を別の名前にしても同様です。
次はビューを使ってみます。
app.rb
にまた3行追加します。見づらくなってきたので、行番号を表示しました😊
16〜18行目のところです。
追加できたら、今度はディレクトリとファイルを作成します。
ディレクトリはviews
で、ファイルはerb_template_page.erb
です💡💡
erb_template_page.erb
の中身は以下の1行です。
この状態で、localhost:4567/erb_template_page
にアクセスすると、現在時刻が表示されます!
続いて、redcarpet という、Markdownに対応させる gem を対応させます。
Gemfile
に1行追加し、$ bundle install
を実行します。
gem 'redcarpet'
app.rb
に3行追加します。対象箇所だけ抜粋します。
またviews
ディレクトリの中にファイルを作成します。
名前はmarkdown_template_page.markdown
です。
中身は以下のとおりです😎😎
これでlocalhost:4567/markdown_template_page
を見ると、以下のようになります。
Markdown の見出し#
が反映されているようですね👏
先程の erb と markdown を組み合わせてみます。
※ここからリンク先サイトとは少し違います。たぶんリンク先サイトに誤りがあります。
app.rb
に以下の3行を追加します。
views
ディレクトリの中にファイルを2つ作成します。
ひとつめはerb_and_md_template_page.erb
で、中身は以下のとおりです🙂
ふたつめは同名のmarkdownファイルで、中身は以下のとおりです。
これでlocalhost:4567/erb_and_md_template_page
を見ると、以下のようになっています🎉🎉🎉
Sinatraの基本は以上です!