コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

エリクシル月曜 スライム編

異世界に転生すらしていないのに現実世界で最弱スライム的扱いを受けているわけですがどうしたらいいのでしょうか

スライムに転生したすぎて異世界トラックに轢かれたみが増し増しです。はい、どうも僕です。みなさんは元気ですかー?僕はダメですね。どうにもこうにもダメです。あんまりにもダメダメすぎてこんな記事を書いているわけです。



ということで、以前書いていたElixir記事のアップデートでもしていこうかと思います。まあ、月曜ですしね(意味不明)。


月曜なのでWebページを作成します

Webページをつくります。ElixirにはPhoenixというフレームワークがあるんですけど、このネタそこまでごついものを使う必要ないしなってことでSlimeなるテンプレートを利用します。

んで、前回サーバ準備したので前回作成したやつをそのまま再利用します。

前回記事
inujini.hatenablog.com


ということで本日はHTMLテンプレートエンジンを使って前回のやつの肉付けを行っていきます。さすがにタグもちゃんとしていないものをWebページと言い張るのもアレですしね……。んでテンプレートに何を使うかと言うとPhoenixにも使用されているというSlimeを使っていきます。

公式
slime-lang.com

GitHub
github.com

関係ないけど「Elixir、Slime」で検索すると顔にかたつむり這わせてる動画がヒットする。


まあそういうのいいや。早速作っていきましょう。まずはslime使うためにmix.exsを編集します。

# ~いろいろ省略
  defp deps do
    [
      {:cowboy, "~> 2.5"},
      {:slime, "~> 1.2"}
    ]
  end

そうしたら、以前作ったHandlerにテンプレートを書き込みます。

defmodule 【プロジェクト名】.Handler do
  def init(req, opts) do
    now_date = :calendar.local_time
    date = Date.from_erl!(elem(now_date,0))
    text = if Date.day_of_week(date) === 1, do: "今日は月曜です<br>GAME OVER", else: "月曜日でない"

    headers = %{"content-type" => "text/html"}
    source = """
    doctype html
    html
      head
        meta charset="utf-8"
        title = site_title
      body
        h1 #{text}
        p 別に曜日とか関係なくつらい
    """
    body = Slime.render(source, site_title: "Helloworld with Slime")
    resp = :cowboy_req.reply(200, headers, body, req)
    {:ok, resp, opts}
  end
end

とりあえず雑なヒアドキュメントで対応。機能的にはページを分けるまででもないですしね……。



それでmix run --no-haltでサーバー起動します。なお、これが正しいサーバーの準備方法なのかは知らないです。どうせみんなPhoenixの機能でサーバー立てるんでしょとかそういう心づもりで書いているのであんまりまともに追及する気はないのです。

んで、起動するとこうなります。ちゃんと表示できましたー。やったー!!
f:id:andron:20181119091235p:plain
ちゃんとタグを認識させることができたので日本語文字化け問題からようやく解放されました……。機能的にアップデートされた部分その程度です。



まあ、そういったわけで今日も月曜なわけですよ。つらいね。