Railsで挫折した人のためのSinatra -2-
はじめてのSinatra
さて、前章までで、面倒臭い環境構築も終わり今章からようやくRubyのコードを書いていくことになります。
今章からアプリケーションをつくるのですが、具体的にどんなアプリにするかというと、俳句を投稿したり、俳句を評価できるアプリケーションである「easy-haiku」を作っていきます。
「easy-haiku」は俳句一覧+俳句投稿ページと俳句詳細ページを持っています。一度送信した俳句は編集することはできないですが、削除することはできます。他のユーザーから評価を受けることもできます。
現在sinatra-appディレクトリ以下の状況はこうなっているはずです。
$ tree .
.
├── Dockerfile
├── Gemfile
├── Gemfile.lock
├── docker-compose.yml
├── init.sh
├── route.rb
├── start.sh
└── vendor
└── bundle(以下略...)
前回説明するのを忘れていましたが、docker-compose upはcontrol+Cで中断できます。
それでは、Docker for Mac が起動しているか確認したのち
docker-compose upして
http://localhost:4567 してみてください。
前回と同様に hello と表示されているはずです。
実際にこの画面を書き換えていきましょう。
新たにsinatra-appディレクトリ以下に viewsディレクトリを作成してその中にindex.erbファイルを作成してください。
作成したら、route.rbとindex.erbをそれぞれ以下のように修正してください。
route.rb↓
require 'sinatra'
get '/' do
@title = "sinatra-app"
erb :index
end
index.erb↓
<html>
<head>
<title>easy-haiku</title>
</head>
<body>
<header></header>
<%= @title %>
<footer></footer>
</body>
</html>
docker-compose upしていたら一度停止し、再度docker-compose upしたのち、 http://localhost:4567 で画面を確認してください。
sinatra-appと表示されていれば成功です。
route.rbを見てもらうとわかるようにsinatraでは簡単にRailsでいうところのrouting機能を作ることができます。
もう一つ http://localhost:4567/haiku にページを作って今度はhaiku-appという文字列を表示してみましょう。erbファイルはすでにあるviews/index.erbを呼び出すことで使いまわせます。
腕試しにちょっと自分でやってみましょう!
上手くできましたか?
http://localhost:4567/haiku にアクセスしてhaiku-appと表示されていれば完璧です。
以下サンプルコードです(route.rb)↓
require 'sinatra'
get '/' do
@title = "sinatra-app"
erb :index
end
get '/haiku' do
@title = "haiku-app"
erb :index
end
get '' do の行の、 '' の中にurlを入れてあげて@titleに文字列でhaiku-appと入れてあげるだけです。erbファイルは同じindex.erbをそのまま使いましょう。
これでSinatraを使ってアプリを作るイメージが少し湧いてきたのではないでしょうか?
しかし、これだと将来的にルーティングを増やしたり記述を増やしたりすると、route.rbファイルがとんでもなく肥大したファイルになってしまう可能性があります。
ですから、それぞれのルーティングの関数内を切り出して別ファイルにうつそうと思います。
具体的な部分は次の章で記述していきますが、クラスを使ってコントローラーのようなものを作っていきたいと思います。
それでは、今章もお疲れさまでした。