目的: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によって作成されるファイル複数
目次:
- 概要
- Ruby(Sinatra)のソースコード修正
- Hamlのソースコード修正
- 説明
- 実行
掲示板のプログラムや説明に関しては、
以前記事を書いているので、そちらを参考にして頂ければ分かりやすいと思います。
以前記事を書いているので、そちらを参考にして頂ければ分かりやすいと思います。
また、ソースコードも以前の記事にあるものを修正したものになります。
Sinatraで掲示板を作ってみた!!
また、MongoDBの起動方法等については、
以下の記事を参考にして頂ければ分かりやすいと思います。
MongoDBを使ってみる。
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で十分とも聞くし、どうしたものか・・・
いずれにせよ、使うかどうかともかく情報としては押さえておこうかと思います。
じゃないと自分が使うのに何が良いか検証もできないですし・・・
しっかし、やはりソースコードがインデントで見辛いな、どうにかならないかな・・・
以下、参考にさせて頂いたサイト様
なし
管理人の独り言
本日、2度目の投稿。
丁度、MongoDBのBSONドキュメントのアクセスまでやったから、ついでに掲示板の方も修正~
そういえば、React.jsが熱いらしいと聞いた。
ただ、小規模ならAngular.js、Vue.jsで十分とも聞くし、どうしたものか・・・
いずれにせよ、使うかどうかともかく情報としては押さえておこうかと思います。
じゃないと自分が使うのに何が良いか検証もできないですし・・・
しっかし、やはりソースコードがインデントで見辛いな、どうにかならないかな・・・