MySQLは設定によってはVARCHARの比較時にアルファベットの大文字小文字を区別しない

最近MySQLのVARCHARがデフォルトの設定で大文字と小文字を区別してくれていない事を知らずにバグを仕込んでしまったので軽く押さえてみた 検証 Dockerコンテナ $ docker run -it --name mysql -e MYSQL_ROOT_PASSWORD=secret -d mysql:8.0 $ docker exec -it…

GoのStructをJSONに変換する場合fieldは大文字でなければならない

Go

GoでJSONを扱いたかったのだがStructから変換する際に変換の対象にならないFieldがあった。 type User struct { No int Name string tel string } func main() { user := User{No: 0, Name: "Bob", tel: "000-1111-2222"} json, _ := json.Marshal(user) fmt…

ActiveRecordのlockメソッド(Postgresql)

概要 これまであまり使っていなかったActiveRecordのlock機能に触れる機会があったので少し試したことを記録しておく Version Ruby 3.1.1 ActiveRecord 7.0.2.2 Postgresql 14.2 詳細 lock(with_lock)メソッド AcitveRecordのロック機能のについてはRailsガ…

DockerのChromeでCupriteの動作を検証してみる

はじめに Seleniumの調査だったり開発環境がApple Siliconだったりで考慮しないといけない事が多いのでSystemTestの設定を後回しにしていたRailsアプリがあったのだが、CupriteというSeleniumではなくCDP(Chrome DevTools Protocol)を使用したGemの存在を知…

RailsでリクエストをWebサーバーから受け取った直後にBreakpointを貼ってデバッグする

RailsでPumaの挙動を確認したかったのだがデバッグするのにRackのMiddlewareが邪魔だったので回避策を検討してみた。 環境 Ruby v3.1.0 Rails v7.0.2.2 詳細 Railsから見て先頭付近でリクエストを受け付けるところとして最初にApplicationControllerにデバッ…

ActiveRecordを単体で試すためのテンプレートを作る

はじめに 勉強だったり仕事でRailsやActiveRecordのソースを読んでるうちに手元で動かしたくなる事が多いのでActiveRecordを単体で扱えるテンプレートを作成してみた。 やった事 詳細はGithubに 動作確認が主な目的でデータを永続化する必要がないので手軽さ…

Rubyでコマンドを作る環境を整えてみる

はじめに 普段の仕事でほぼ毎日Rubyを書いているがもっぱらRailsばかりなのでもっと気軽にスクリプトを書いていこうと思い。Rubyで書いたプログラムをコマンドとして呼び出せる環境を考えてみた。 やった事 RubyでCLIツールを作りたいという事でThorを追加 g…