#タイトル: ElixirでMongoDBに接続するだけの簡単なお仕事です!!
##目的: ElixirからMongoDBのドライバを使ってみる。
##目次:
1.概要
2."mix new"でプロジェクト作成
3.Elixirのライブラリを取り込んでみよう!!
4.MongoDBに接続するだけの簡単なお仕事!!
##実行環境:
OS: Windows8.1
Erlang: Eshell V6.4
Elixir: v1.0.4
elixir-mongo: v0.5.1
MongoDB:v3.0.3
###1.概要
####1.1 概要
Phoenixのサイトでずっと英語を素人翻訳するのがあきてきたので、
次の活力を得るためにElixir+MongoDBをやってみようかと思います。
今回の記事がQiitaにおける初投稿になります。
皆様の記事は色々と参考とさせて頂いています。いつも、ありがとうございます!
私も何かご協力ができないかと思い、記事を投稿することとしました。
Elixir+MongoDBとニッチな内容だと思いますが、
この記事がどなたかの訳に立つことを願います。
"mix new"やライブラリの取り込み方は、この方の記事を参考に実施しました。
Qiita - Elixirで試しに何か書いてみる(その1)
しかし、CRUD操作まで辿り着けなかった・・・orz
####1.2 前提
MongoDBのインストールやElixirの実行環境はあらかじめ構築しておいて下さい。
また、MongoDBは起動しておいて下さい。
###2."mix new"でプロジェクト作成
####2.1 プロジェクト作成
コマンドプロンプトを開く。
作業ディレクトリを作成します。
各自の適切なディレクトリに移動しておいて下さい。
以下のコマンド実行する。
>mix new mongo_test
作業ディレクトリ名はお好きなものをどうぞ!!
ディレクトリが作成されているか確認する。
lsでもいいしGUIで見てもいいです。
これで、mix newを使ってプロジェクトができました。
####2.2 テスト
作成したディレクトリへ移動し、以下のコマンドを実行する
>mix test
何もエラーが出なければおk。
###3.Elixirのライブラリを取り込んでみよう!!
####3.1 mix.exs編集
作業ディレクトリに移動する。
その中から、"/mongo_test/mix.exs"を開く。
色々書かれていると思うが、とりあえず目的だけ達する。
何がしたいか・・・
MongoDBのElixirドライバのライブラリが欲しい!!
下の方に"defp deps do"と言う部分がある。
ここに、以下の行を追加する。
追加: [{:mongo, "~> 0.5.1"}]
こんな感じになります。
defmodule MongoTest.Mixfile do
use Mix.Project
def project do
[app: :mongo_test,
version: "0.0.1",
elixir: "~> 1.0.4",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
deps: deps]
end
# Configuration for the OTP application
#
# Type `mix help compile.app` for more information
def application do
[applications: [:logger]]
end
# Dependencies can be Hex packages:
#
# {:mydep, "~> 0.3.0"}
#
# Or git/path repositories:
#
# {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
#
# Type `mix help deps` for more examples and options
defp deps do
[{:mongo, "~> 0.5.1"}]
end
end
####3.2 ライブラリ取り込み
以下のコマンドを実行する。
>mix deps.get
これで、3.2で設定したライブラリがダウンロードできる。
依存関係とかも考慮しないといけないらしいが、
今回使うライブラリは一つだけなので気にしない。
hexの利用を聞かれると思うがyesで・・・
local.hexと各プロジェクトで混在できるらしい。
参考までにコマンドの実行結果
mongo_test\>mix deps.get
Could not find hex, which is needed to build dependency :mongo
Shall I install hex? [Yn] y
* creating c:/Users/Takes_000/.mix/archives/hex.ez
Running dependency resolution
Dependency resolution completed successfully
mongo: v0.5.1
bson: v0.4.3
* Getting mongo (Hex package)
Checking package (https://s3.amazonaws.com/s3.hex.pm/tarballs/mongo-0.5.1.tar)
Fetched package
Unpacked package tarball (c:/Users/Takes_000/.hex/packages/mongo-0.5.1.tar)
* Getting bson (Hex package)
Checking package (https://s3.amazonaws.com/s3.hex.pm/tarballs/bson-0.4.3.tar)
Fetched package
Unpacked package tarball (c:/Users/Takes_000/.hex/packages/bson-0.4.3.tar)
###4.MongoDBに接続するだけの簡単なお仕事!!
####4.1 Elixirソースコード作成
Elixirのソースコードは以下の通り作成した。
mongo = Mongo.connect!
db = mongo |> Mongo.db("phoenix_bbs")
collection = db |> Mongo.Db.collection("comments")
Mongo.Server.close(mongo)
すみません、これだけなんです・・・
Rubyらしくもなく、関数型言語っぽさは皆無です・・・
####4.2 実行
mixで実行するため以下のコマンドを使う。
>mix run ./lib/mongo_test.ex
####4.3 MongoDB確認
MongoDBに接続し、DBとCollectionが作成されたか確認してみる。
(接続時、DB、Collectionがない場合は作成されて接続される)
以下、一連のMongoDB操作の流れ
mongo_test>mongo
MongoDB shell version: 3.0.3
connecting to: test
\> db
test
\> show databases
local 0.078GB
phoenix_bbs 0.078GB
\> use phoenix_bbs
switched to db phoenix_bbs
\> show collections
comments
system.indexes
\>exit
問題なく作成されている。
CRUD操作はまた分かったら続きの記事を作成します。
QiitaのMarckdown覚えないと・・・
追記
CRUD操作する続き書きました。
続!ElixirでMongoDBに接続するだけの簡単なお仕事です!!
以上!!
以下、参考にさせて頂いたサイト様
https://github.com/checkiz/elixir-mongo