Railsのマイグレーションファイルで add_index する際、 using オプションまで指定する必要があるのか

インデックスの方法を明示的に指定したい場合のみ指定する。

Rails で using オプションを提供しているのはDBによって、インデックスの貼り方を指定できるためで、 MySQLInnoDB を使っているのに using: :btree する意味は全く無い(してもしなくても結果は同じ)

Ruby の `Enumerable#all?` が empty array にたいして `true` を返す

[].all? => false が返ってもヨサソウなのに・・という疑問

チャットで聞いたりググったりして、数学的に正しい方向に倒している結果、今の挙動である true を返していることがわかった。

  • ruby's "any?" and "all?" methods behaviour on Empty Arrays and Hashes - Stack Overflow
    • So since the block never gets called, of course it never returns false or nil, thus all returns true.
  • Vacuous truth - Wikipedia, the free encyclopedia
    • For example, the statement "all cell phones in the room are turned off" will be true whenever there are no cell phones in the room. In this case, the statement "all cell phones in the room are turned on" would also be vacuously true, as would the conjunction of the two: "all cell phones in the room are turned on and turned off".
  • 自明性 (数学) - Wikipedia)
    • 証明の主要な部分は空でない集合の場合を考え、元を詳細に検査するであろう。集合が空の場合には、性質は自明にすべての元によって持たれている、なぜならば元がないからである。

TIL

Redcarpet の辛いところ

TOC(Table Of Contents) を生成する機能があるのだけど、 見出しに日本語が含まれていると、完全にスルーされてしまう点。

## これは概要です

これを redcarpet のレンダリング処理にかませると・・・

<h2 name="">これは概要です</h2>

といった具合。

## This is overview

だと

<h2 name="this-is-overview">これは概要です</h2>

となる。。。

これは辛いのでJSで h1 等から自動的にTOCを組み立てるライブラリも試してみたものの、 かなりのライブラリが日本語をスルーしてしまう・・ この辺りはどう乗り切ってるのかな

204 No Content について

前回の記事 prmd の辛いところ で「手続きクラスをコールするだけのAPIの返り値は No Content で構わない」と書いたものの、 もし今後なんらかの JSON を返却する必要がでてきたら?と考えると、 最初から HTTP/1.1 200 OK としておくべきな気がしてきた。

Response は empty としかったのはドキュメント上でも、 レスポンスサンプルが

{}

だけとなってしまって、意図してこうなっているのかわかりづらいので、 意味のない JSON を返すくらいなら、実体としては No Content なのだから、 HTTP/1.1 204 No Content でいいじゃない、という発想だったのだけど、 もし JSON の返却要件が追加されたら、当然ステータスコード200201 になりうるので、 その時点でステータスコードが変わってしまうのはイマイチ君な気がする。 だったら最初から 200 を返しつつ、空 JSON をレスポンスにしておくのが正しい気がする。

200 にしたけど、やっぱり実装が変わって、  何かリソースを作成、リダイレクトしたいから 201 にするべきってなったらどうするんだというモヤモヤが新たに・・)