Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,982 views

Published on

2015/8/25のshibuya.exでのLT資料

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

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

×