Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

3 012 vues

Publié le

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

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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

×