スポンサーリンク

2015年5月27日

[Sinatra+MongoDB]Sinatraの掲示板にMongoDBを使ってみた。

タイトル:[Sinatra+MongoDB]Sinatraの掲示板にMongoDBを使ってみた。

目的:Sinatraで作成した掲示板を改良する。書き込みデータの管理にMongoDBを使用する。

実施環境:
OS:Windows8.1
Ruby:v2.2.2
Sinatra:v1.4.6
Haml:v4.0.6
mongo(gems):v2.0.4
MongoDB:mongodb-win32-x86_64-2008plus-ssl-3.0.3-signed


ディレクトリ構造:
作業ディレクトリ
|-sinatra_start.rb(rubyファイル)
|
|-views(ディレクトリ)
|   |-index.haml(hamlファイル)
|
|-db
    |-MongoDBによって作成されるファイル複数

目次:

  1. 概要
  2. Ruby(Sinatra)のソースコード修正
  3. Hamlのソースコード修正
  4. 説明
  5. 実行

掲示板のプログラムや説明に関しては、
以前記事を書いているので、そちらを参考にして頂ければ分かりやすいと思います。
また、ソースコードも以前の記事にあるものを修正したものになります。
Sinatraで掲示板を作ってみた!!

また、MongoDBの起動方法等については、
以下の記事を参考にして頂ければ分かりやすいと思います。
MongoDBを使ってみる。

1.概要

1.1
以前、Sinatraで作成した掲示板。
書き込みデータの管理はCSVで行っていた。
その部分をMongoDBに書き換える。

以下の点に注意
  • DBのソースコード部分はべた書きである
  • Modelクラスの作成はない
  • Validationによる入力データの検証は行っていない

2.Ruby(Sinatra)のソースコード修正

2.1
Ruby(Sinatra)側のソースコードは以下の通り修正した。

3.Hamlのソースコード修正

3.1
Haml側のソースコードは以下の通り修正した。

4.説明

4.1
「get '/' do」のデータ取得の修正部分。

CSV.read("db/sinatra_bbs.csv")
の部分を

db[:comments].find
に変更している。
(DBの接続部分もあるが、これだけ)

4.2
「put '/write_comment' do」のコメント書き込みの修正部分。

CSV.open("db/sinatra_bbs.csv", "a") do |csv|
csv << [params[:name], params[:title], params[:message]]
end
の部分を

db[:comments].insert_one({
:name => params[:name],
:title => params[:title],
:comment => params[:message]
})
に変更している。
(DBの接続部分もあるが、これだけ)

5.実行

5.1
以下のコマンドを実行する。
コマンド:ruby sinatra_start.rb

5.2
以下のURLにアクセスする。
(なお、ポートを変更している方は変更したポート番号を指定する)
URL: http://localhost:4567

実行による表示は以前の記事(Sinatraで掲示板を作ってみた!!の実行画像)から変わらない。
プログラム内部でのデータの取得と挿入がDBに変わっているだけである。
(微妙にボーダー入ってるかもですけど、気にしないこと・・・)

以上!!

以下、参考にさせて頂いたサイト様
なし

管理人の独り言
本日、2度目の投稿。
丁度、MongoDBのBSONドキュメントのアクセスまでやったから、ついでに掲示板の方も修正~

そういえば、React.jsが熱いらしいと聞いた。
ただ、小規模ならAngular.js、Vue.jsで十分とも聞くし、どうしたものか・・・
いずれにせよ、使うかどうかともかく情報としては押さえておこうかと思います。
じゃないと自分が使うのに何が良いか検証もできないですし・・・

しっかし、やはりソースコードがインデントで見辛いな、どうにかならないかな・・・

人気の投稿