経緯
学習中に先人たちのブログやQiitaの記事のサンプルコードを試してみたり、
ライブラリを試してみたりする度に、新たにPhoenixのプロジェクトを作り、
その都度PostgreSQLのDBも作ってたら、結構な数のDBができてしまって。。
それに試したコードの大半がSQLを直接書く必要もなかったんで、
ポスグレである必要ないなと。。
使いまわせばいいんだけなんですけどね
ということで
候補に上がったのが、SQLite3。あんまりゴリゴリ使ったことないけど。定番なのは知ってる。
前提
Elixirだけ入ってればいいです。
$ elixir -v
Erlang/OTP 24 [erts-12.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit] [dtrace]
Elixir 1.13.1 (compiled with Erlang/OTP 24)
設定方法は?
mix phx.new
時にオプション指定するだけ。
$ mix phx.new my_app --database sqlite3
昔からサポートされてはいたけど、
古いバージョンだと自分でライブリ追加したり、しなきゃならなかったみたいですが、
嬉しいことにPhoenix1.6.xではオプションで指定するだけで使える。
それならば使わない手はないですね。
これだけで終わってしまっては記事としては寂しいので
一応画面立ち上げまでつづけてやっていきます。
↓途中で聞かれるこれは"Y"で。
Fetch and install dependencies? [Yn] Y
終了したら、案内に従って以下を実行
$ cd my_app
$ mix ecto.create
ectoが終了したら、my_app_dev.db
というファイルが出来上がってる。
シンプルな画面作って動作を確認してみましょう。
mix phx.gen.html People User users name:string age:integer
lib/my_app_web/router.ex
に一行追加
scope "/", MyAppWeb do
pipe_through :browser
get "/", PageController, :index
resources "/users", UserController # この行を追加
end
migrate実行
$ mix ecto.migrate
終了したら、ブラウザでアクセス
再度フォルダを見てみると
この時点で、my_app_dev.db
、my_app_dev.db-shm
、my_app_dev.db-wal
の
三つのファイルが出来上がっている。サイズも軽量。
- db-shmファイル: トランザクション開始から終了までの更新内容が書き込まれる
- db-walファイル: コミットした時に更新内容が書き込まれる
とのこと。