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

RubyVM::AbstractSyntaxTree で Node を辿る処理をシンプルに実装する

Ruby の Enumerator を使うと簡単にRubyのコードを処理できて便利だったので、ブログに書いておく。 ast = RubyVM::AbstractSyntaxTree.parse(<<~RUBY) class User < ApplicationRecord def say(text) puts text end def sum(x, y) x + y end end RUBY enum …

【追記】Rails v7.1.0 で `can't be blank` が `can’t be blank` に変わる(リバートされました)

既存アプリやライブラリへの影響が大きく、この変更に対してネガティブなフィードバックも多かったためリバートされました。 github.com 概要 表題の通り、Rails v7.1.0 で APOSTROPHE (U+0027) が SINGLE QUOTATION MARK (U+2019) に変わります。 github.co…

プルリクで更新されたgemの一覧を出力する

Gemfile.lock のdiffから更新されたgemを探す方法を調べたのでメモ 動作確認に使ったプルリク github.com GitHub APIでプルリクの情報を取得する $ gh api '/repos/rails/rails/pulls/48955' --jq '.base.sha, .head.sha' 1e824aa8e0655b4717cf612e31010bdd8…

Rubyやgit-gsubを使って正規表現で複数行を置換する part2

sinsoku.hatenablog.com の続き。 回答 3 Rubyで -0777 を指定するとファイル単位で読み込む方法を教えて頂きました。 $ cat foo.txt foo $ cat bar.txt bar $ cat buz.txt foo bar buz $ ruby -i -n0777 -e 'puts "hi, " + $_' foo.txt bar.txt buz.txt $ c…

Rubyやgit-gsubを使って正規表現で複数行を置換する

150個を超える *.tf をまとめて編集する方法を調べたので、備忘録としてまとめておく。 経緯 Terraformのコードを複数ファイルにすべきか、それとも1つのファイルにすべきか難しいな。hclをパースして、hclを書くプログラムを書いた方が良いのかなぁ...— 神…

手元にあるパッチの一覧を確認するシェルスクリプト

git

ブログに書いていなかったことに気づいたので、残しておく。 モチベーション OSSや仕事のコードを修正してるときに「まだ動作確認ができていない」「コミットメッセージの説明が不十分」なコミットが手元に溜まることがある。 このパッチの一覧を確認するた…

Railsの DATABASE_URL で指定できるパスワードの文字種

Railsアプリケーションを動かすAWSリソースをTerraformで作る場合、random_password を使ってDBパスワードを生成します。 しかし、 DBパスワードに一部の記号が含まれていると環境変数 DATABASE_URL で渡す際に URI::InvalidURIError が発生してしまうため、…

GitHubのPull Requestでコミットメッセージの文字数を調べる

GitHubのPull Requestで各コミットメッセージの文字数や変更行数を取得する方法を調べたのでまとめておく。 GraphQL APIで取得できたので、雑にcsv形式にして出力した。 stat-commit-messages.sh #!/bin/bash set -eu OWNER=${1:-rails} NAME=${2:-rails} NU…