GMO Pepabo, Inc.
Joe Honzawa
2015/08/25 Shibuya.ex
DBにseedする
ライブラリつくった
自己紹介
> ほんざわ じょう
@Joe_noh
Joe-noh
> GMOペパボの1年目
DBに初期データを
投入したい
hex.pmで検索
exseed
Inspired largely by seed-fu
priv/repo/seeds/posts.exs
import Exseed
seed MyApp.Post do
id 1
title "First"
body "Hey."
end
seed MyApp.Post do
...
end $ mix exseed.seed
priv/repo/seeds/posts.exs
import Exseed
seed MyApp.Post do
id 1
title "First"
body "Hey."
end
seed MyApp.Post do
...
end
毎回書くのダルい
priv/repo/seeds/posts.exs
import Exseed
seed MyApp.Post do
id 1
title "First"
body "Hey."
end
seed MyApp.Post do
...
end
縦に伸びて行数を食う
}
Repoはconfig.exsで設定
use Mix.Config
config :exseed, :repo, MyApp.Repo
複数Repo使えない?
priv/repo/seeds/posts.exs
import Exseed
seed MyApp.Post do
id 1
title "First"
body "Hey."
end
Rubyっぽすぎるのでは?
うーむ
つくろう
要件と願望
> モデル名とかの繰り返しは避けたい
> 1行1属性縛りは避けたい
> 複数Repo使えるようにしたい
> Elixirらしく書きたい
> パイプをつなげたい
tane
https://github.com/
Joe-noh/tane
priv/repo/seeds.exs
use Tane
repo(MyApp.Repo)
|> model(MyApp.User)
|> seed(name: "bob", age: 25)
|> model(MyApp.Post)
|> seed(title: "First", body: "Hey.")
|> seed(title: "Second", body: "Hi.")
$ mix tane
priv/repo/seeds.exs
use Tane
repo(MyApp.Repo)
|> model(MyApp.User)
|> delete_all!
|> seed(:bob, name: "bob", age: 25)
|> model(MyApp.Post)
|> seed(title: "First", body: "Hey.",
user_id: registered(:bob).id)
https://github.com/
Joe-noh/tane

DBにseedするライブラリつくった