2020/01/19のメモ

クラス変数

仕様が気になったので実際にコードを書いて調べた。だいたい想定通りだけど、親にクラス変数を設定した段階で共有化される(親のを探しに行くのが最初の挙動っぽい)のがへーとなった。

class A
  def cv
    @@cv
  end
end

class B < A  
  @@cv = 'B'
end

class C < A
  @@cv = 'C'
end

class A
  @@cv = 'A'
end

puts A.new.cv #=> 'A'
puts B.new.cv #=> 'A'
puts C.new.cv #=> 'A'
class A
  def cv
    @@cv
  end
end

class C < A
  @@cv = 'C'
end

class B < A  
  @@cv = 'B'
end

puts A.new.cv #=> uninitialized class variable @@cv in A (NameError)
puts B.new.cv
puts C.new.cv

savanna.ioの証明書切れ

経緯

  • herokuでnaked domain(wwwとかついていないやつ)を利用している
  • herokuのデフォルトのSSLとnaked domainだとCDNとの併用ができないらしい
  • 最初fastlyを利用しようとしていて、設定をいくらゴニョゴニョしてもうまくいかなかった
  • Expedited SSLというアドオンとcloudflareを利用することでCDNの利用ができた
  • 一応うまく動いていたがExpedited SSLの設定がうまくいっておらず(把握していたがとりあえず動いているので後回しになっていた)、1年経って証明書切れ(本来はなにかしらの証明書更新のためのアクションを促されるはずだったが何もなかった)
  • Expedited SSLを削除してherokuのに戻したところ普通に動いた(cloudflareも普通に動いていた…)
    • Expedited SSLにお金払ったの損だったな、という気持ちに

sleek

sleek とは 意味・読み方・表現 | Weblio英和辞書

なめらかな、つやのある、小ぎれいな、めかした、スマートな、口先のうまい、人あたりのよい

shrine/instrumentation.md at master · shrinerb/shrine

  • shrineをある程度カスタマイズして使うのであれば必須のプラグインでは、という気がする
  • ARのカラムとして普通に使う場合は入れても入れなくても、という気がする

Restore Cached Data · Shrine

puma-dev/dns.go at master · puma/puma-dev

  • 今ではあまり使われないpuma-devだけど、dns問い合わせをいい感じに解決してくれる機能というのは、サブドメインを扱うアプリケーションのときに便利だな、と思ってる
  • その昔はローカルにbindいれてゴニョゴニョしていたり、/etc/hostsで頑張ったりしていた
  • Railsで環境毎にサブドメインとパスを切り替える - WEB SALAD のようにアプリケーション側でうまいことやる、という方法もあるけどできればやりたくない
  • puma-devのdnsのところだけ抜き出して使えると便利なのでは?と思いソースをみたらこれを見た限りでは難しくなさそうだなーとなった
    • 時間ないのでできるかわからないが、カッとなったらやりたい

minioのエラー

minio_1      | 2020/01/19 07:48:55 http: TLS handshake error from 172.26.0.1:57822: EOF

おっ?と思ったけど、単にminioのオレオレ証明書をブラウザで許可していないだけだった。

apt-key output should not be parsed (stdout is not a terminal)

これ単にwarningが出るだけで動いてはいるみたいなのでとりあえず放っておく

docker-composeでpostgresqlのバージョンを変えると起動しなくなった

docker-compose down --volumeでvolume一回消したら解決した