2023-01-01から1年間の記事一覧

Ruby で nil の場合に別の値を入れる #ruby

まとめ ぼっち演算子と or 演算子を使うといい感じに書ける。 result = hoge&.value || "default" 愚直に書く if hoge== nil result = "default" else result = hoge.value end nil? を使う Object クラスにレシーバーが nil の場合に真偽値を返すメソッドが…

ridgepole で MySQL の TEXT 型を後から Not Null にするとエラーになる #Rails #MySQL #ridgepole

概要 Rails で DB の構成管理に ridgepole を使っているんだけれど、 MySQL の TEXT 型に後から Not Null 制約を付けるとエラーになってしまう。 github.com 原因 例えば下記の用に定義していたとする。 # 最初は null: true で作成 t.text "my_text", null:…

importmap で特定のページでだけ使う js を作る #rails

概要 importmap-rails を使っている場合に、特定のページだけで使う js ファイルを作る方法をまとめる。 github.com js ファイルを用意する 任意のファイル名と実装内容で良いが、ここでは下記のようにする。 app/javascript/foo/special.js import 可能にす…

factory_bot_rails 6.3.0 から PK に対する sequence はエラーになる #rails

概要 factory_bot_rails 6.3.0 から Active Record の PK カラムに対して sequence を指定するとエラーになるようになったようだ。 指定した場合、 FactoryBot::AttributeDefinitionError が発生する。 github.com FactoryBot.define do factory :hoge do # …

転職し(てい)ました

表題の通りなんですが、3月いっぱいでコネヒトを退職して、4月からエス・エム・エスという会社で働いています。 試用期間が終わったくらいにブログでも書こうかなと思ってたら、半年以上過ぎてるわ年末が目前だわで、時の早さを自分の怠惰の言い訳にしたくな…

Rails の collection_check_boxes をカスタマイズする #rails

概要 検索フォームのような、チェックボックスによる複数条件を指定する UI を作ろうとしたときに、 collection_check_boxes を使うとよさそう。 collection_check_boxes | Railsドキュメント しかし、collection_check_boxes のオプションだけだと input の…

Rails でトランザクション完了後に更新内容を取得する #rails

概要 トランザクションとは分離したいが、保存した内容によって事後処理を行いたい場合がある。 changed? や hoge_changed? あたりは save 後には false になってしまうため、更新内容を取得できない。 ApplicationRecord.transaction do if foo.name_change…

Rails + Puma は cluster mode だと RubyMine でデバッグできない #Rails #RubyMine

Rails + Docker な開発環境で RubyMine のリモートデバッグを行う場合、下記を参考にすればできるようになる。 www.jetbrains.com ところが、 Puma を利用していた際にデバッグモードでエラーが発生し起動できなくなってしまった。 Exception: Connection re…

「詳解Go言語Webアプリケーション開発」を読んだ #golang

Go

詳解Go言語Webアプリケーション開発作者:清水陽一郎シーアンドアール研究所Amazon 仕事では中々 Go を書く機会がないので、手を動かしながら学べる本がないかなと手に取った。 初心者向けの入門書かな、くらいの気持ちだったのだけれど、いい意味で期待を裏…

GitHub Actions で service のコンテナにリポジトリのファイルをマウントしようとするとエラーになる #GitHub #Actions

概要 GitHub Actions では、ジョブのサービスとして MySQL や Redis が使える。 volumes ( jobs.<job_id>.services.<service_id>.volumes ) を指定することで、サービス間やステップ間でデータを共有できる。 ただソースコードは通常 actions/checkout を利用すると思うが、リポ</service_id></job_id>…

GitHub Actions 上で MySQL のシステム変数をカスタマイズする #GitHub #Actions #MySQL

概要 GitHub Actions の Workflow では、 Services として MySQL が利用できる。 character_set_server などのシステム変数を変更する方法についてまとめる。 採用した方法: SQL ファイルでグローバル変数を書き換える Workflow で使う MySQL は基本使い捨て…

DataGrip で sql_mode に STRICT_TRANS_TABLES が適用される #mysql

概要 DataGrip で MySQL に接続すると、 sql_mode を別途設定しているにも関わらず、STRICT_TRANS_TABLES が勝手に適用されていた。 グローバルの設定を確認すると、意図したものが設定されているが、セッションの設定は STRICT_TRANS_TABLES になってしまう…

Goland で Docker を使った開発環境を作成する #golang #goland

概要 ネットに十分な情報はあるのだが、なんやかんや毎回詰まったりちょこちょこ調べたりしているので自分用にまとめておく。 Goland を使う Docker で動かす Web アプリケーション air でホットリロード delve でリモートデバッグ テストも Docker 経由でデ…