LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Organization

Ectoにプルリクを出してわかったこと(Elixir)

新しい技術は、必ず次の技術によって置き換わる宿命を持っている。それをまた自分の手でやってこそ技術屋冥利に尽きる。自分がやらなければ他社がやるだけのこと。商品のコストもまったく同じ

Advent Calendar 2022 45日目1の記事です。
I'm looking forward to 12/25,2022 :santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5:
私のAdvent Calendar 2022 一覧


はじめに

Elixirを楽しんでいますか:bangbang::bangbang::bangbang:

Ectoに出したプルリクJosé Valimさんにマージしてもらえました :tada::tada::tada:

What is Ecto ?

the database wrapper and query generator for Elixir

プルリクの内容

プルリクの内容は、mix ecto.gen.repoタスクを実行したときのメッセージを改善しました。

プルリクにて、José Valimさんとやりとりをしているときにわかったこと

プルリクにて、José Valimさんとやりとりをしているときにわかったことがあります。
以下、プロジェクト名のfriendsEctoのGetting Startedの例に由来しています。

Friends.Application.start/2childrenFriends.Repoを追加する方法は2つあります。

タプルで書く例

lib/friends/application.ex
      def start(_type, _args) do
        children = [
          {Friends.Repo, []}
        ]

モジュール名だけで書く例★José Valimさん推奨★

lib/friends/application.ex
      def start(_type, _args) do
        children = [
          Friends.Repo
        ]

引数を必要としない場合の書き方は、後者のほうをJosé Valimさんは好まれているようです。
プルリクでのやりとりにて、後者にするようにコメントをいただきました。
この視点は、 @mnishiguchi さんにコメントをいただいて気づきました。
ありがとうございます!:pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:

What is mix ecto.gen.repoタスク ?

mix ecto.gen.repoタスクは、configRepoモジュールを生成してくれます。
以下、例です。

$ mix ecto.gen.repo -r Friends.Repo

と、ガイドと同じように実行すると、以下の2つのファイルが生成されます。

config/config.exs
config :friends, Friends.Repo,
  database: "friends",
  username: "user",
  password: "pass",
  hostname: "localhost"
lib/friends/repo.ex
defmodule Friends.Repo do
  use Ecto.Repo,
    otp_app: :friends,
    adapter: Ecto.Adapters.Postgres
end

ちょっと待って、mix ecto.gen.repoタスクなんて知らないよ!?

Phoenixでは、mix phx.newタスクで自動的にconfigRepoモジュールが作られます。
mix new friends --supてな具合に、素のElixirプロジェクトからはじめて、Ectoを追加したときに必要です。

なんで、素のElixirプロジェクトからはじめたの!?

気まぐれです。
スッキリわかるSQL入門 第2版 ドリル222問付き!:book:」という本でSQLを基礎から学び直そうと取り組みはじめて、どうせならElixirを楽しみたいということではじめました。

mix ecto.gen.repoタスクを実行時のメッセージがわかりにくいとおもったから、ダメ元でプルリクをだしたら、José Valimさんにマージしてもらえました :tada::tada::tada:

スクリーンショット 2022-02-13 22.11.54.png

Wrapping up :lgtm::lgtm::lgtm::lgtm::lgtm:

Enjoy Elixir:bangbang::bangbang::bangbang:
$\huge{Enjoy\ Elixir🚀}$

今回は、以下を書きました。

  • Ectoに出したプルリクJosé Valimさんにマージしてもらえました :tada::tada::tada:
  • application.exchildrenにモジュールを追加する際には、引数を必要としない場合にはモジュール名のみを書くことが推奨されているようです

$\huge{ありがとうございます!}$

以上です。


付録

以下、付録です。

Elixirの誕生日は、2012年5月24日です。
そのため、今年の2022年5月24日は10周年を迎えます。

iex> Date.diff(~D[2022-05-24], ~D[2022-02-14])
99

そうそう!
2月24日発売予定のWEB+DB PRESSで、ElixirPhoenixの特集がでますよ〜

ElixirPhoenixをはじめられたばかりの方も、腕におぼえがある方も、どんなものなのかなあと様子見をきめこんでいる方も、
つまりは
$\huge{全人類のみなみなさま!!!}$
お手にとって、お楽しみください!!!


Elixir

最後の最後に、Elixirについて紹介します。

  • |>でスイスイ、プログラミングしていくことができる素敵なプログラミング言語です
  • さっそくプログラムの例を示します
  • Qiita APIを使わせていただいて、Elixirタグがついた最新の記事を20件取得しています
  • ここでは雰囲気をつかんでいただければ大丈夫です
Mix.install [{:req, "~> 0.2.1"}]

"https://qiita.com/api/v2/items?query=tag:Elixir"
|> URI.encode()
|> Req.get!(finch_options: [pool_timeout: 50000, receive_timeout: 50000])
|> Map.get(:body)
|> Enum.map(& Map.take(&1, ["title", "url"]))

Webアプリケーションを楽しむなら

IoTを楽しむなら

AIを楽しむなら

もっとElixirのことを知りたい方へオススメの書籍 :books:

コミュニティ

  • elixir.jp Slack workspaceに参加してみてください
    • マヂ、やさしい人ばっかりのコミュニティ
    • あなたの困ったをきっと解決してくれるでしょう
  • NervesJP Slack workspaceでは、NervesやIoTが好きな愉快なfolksたちがあなたの訪れを歓迎します :tada:
  • たくさんのコミュニティがあります
    FCOvBkAUYAE6mL8.jpeg
    (EDI/fukuoka.ex/kokura.exLiveView JP@piacerex さん作 :pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:)

Elixirコミュニティに初めて接する方は下記がオススメです

Elixirコミュニティ の歩き方 -国内オンライン編-

https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian
image.png
(piyopiyo.exエリジョ の nakoさん(@kn339264) 作、素敵な資料:clap::clap_tone1::clap_tone2::clap_tone3::clap_tone4::clap_tone5:)

Elixirのイベント情報

@koga1020 さんが作成されたイベントカレンダーがあります。
https://elixir-jp-calendar.fly.dev/

気になるイベントにはぜひ参加してみましょう!!!

上記サイトの解説記事はこちらです。


I organize autoracex.
And I take part in NervesJP, fukuoka.ex, EDI, tokyo.ex, Pelemay.
I hope someday you'll join us.

We Are The Alchemists, my friends!

  1. @kaizen_nagoya さんの「「@e99h2121 アドベントカレンダーではありますまいか Advent Calendar 2020」の改訂版ではありますまいか Advent Calendar 2022 1日目 Most Breakthrough Generator」から着想を得て、模倣いたしました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1