概要
環境構築〜MVCの動きが一通り表現できるまでの道のりを解説します。
ruby on Railsを用いて、Webアプリを作成した経験があったので、MVCの動きをどのように表現できるのかを確認する練習として作成しました。
ruby on Railsでアプリケーションを作成したことがある人向けへの説明になります。
##環境構築編
ruby,rails,mysqlがインストールされている前提での説明になります。
mysqlでのテーブル作成に関しての説明は他の記事に譲ります。
今回はDB名:sinatra_practice、テーブル名:commentとしています。
###sinatraのインストール
Sinatraとは、軽量なWebアプリケーションフレームワークです。
gemとして用意されているので、下記のコマンドでインストールします。
gem install sinatra
###sinatra_contribのインストール
sinatra_contribとは、コードを変更した際、Webサーバーを再起動せずに変更点を反映してくれるgemです。
このgemは必須ではないですが、開発がとても効率的になるので、インストールすることをおすすめします。
gem install sinatra-contrib
実装編
まずフォルダ構造、完成コードを掲載します。
.
├── myapp.rb
├── views
│ ├── index.erb
require 'sinatra'
require 'sinatra/reloader'
require 'active_record'
ActiveRecord::Base.establish_connection(
adapter: "mysql2",
host: "localhost",
username: "root",
password: "",
database: "sinatra_practice",
socket: "/tmp/mysql.sock"
)
class Comment < ActiveRecord::Base
end
get "/" do
@comments = Comment.all
erb :index
end
post "/new" do
Comment.create({body: params[:body]})
redirect '/'
end
post "/delete" do
puts params
Comment.find(params[:id]).destroy
redirect '/'
end
<!DOCTYPE html>
<html lang="ja">
<head>
<mata charset="utf-8">
<title>ToDo</title>
</head>
<body>
<h1>ToDoリスト</h1>
<ul>
<% @comments.each do |comment| %>
<li data-id= "<%= comment.id %>">
<%= comment.body %>
<form method="post" action="/delete">
<input type="hidden" name="id" value="<%= comment.id %>">
<input type="submit" value="done!">
</form>
</li>
<% end %>
</ul>
<form method="post" action="/new">
<input type= "text" name="body">
<input type= "submit" value="追加">
</form>
</body>
</html>
myapp.rbに関して
ruby on Railsを触ったことがある人向けへの解説ですが、普段あまり意識しないことも記載しておきます。
- require
- ライブラリの読み込み
- sinatra/reloaderは環境構築でインストールしたinatra-contribの変更を自動反映してくれる
- active_recordはDBのデータをRubyオブジェクトとして扱えるようにするもの
- railsのインストールが必要
- ライブラリの読み込み
- ActiveRecord::Base.establish_connection
- DBへの接続情報を指定
##まとめ
SinatraはMVCを意識せずミニアプリを作成するにはもってこいだと感じました。
コードが動かない、記載について詳しく解説してほしい等あったらご連絡ください