くりにっき

フルスタックキュアエンジニアです

Ruby

自作gemでモンキーパッチrbsを利用する

コンテキスト 構成 手順 モンキーパッチrbsを使うメリット 最後に 2024/12/05 20:27追記 コンテキスト 僕が直近2〜3年以内に新しく作ったgemでは全てrbsとsteepを導入してガッツリ型を書いています。 しかし自分のgemのrbsは書けても、自分のgemが依存してい…

地域.rbカレンダーでconnpass APIの個人利用申請をした

tl;dr; 時系列 詳しいログ 具体的にやったこと Before After Terraform ハマったポイント:Terraformでapplyする時だけなぜかエラーになる 最後に tl;dr; connpass APIの仕様変更で 地域.rbカレンダー を閉じるつもりでしたが、個人利用申請を行ったので2024…

rbs_collection.lock.yamlをGitHub Actionsで自動updateする

ruby-jp slackでそういう需要があるので作った ワークフローの設定 実際に作られたPR 事前に必要なもの GitHub App ワークフローの設定 最低限いるのはこの辺。必要に応じてslack通知とか足してください *1 name: rbs-collection-updater on: schedule: - cr…

ruby-wasm-vdomで雑なオレオレツールを作った

作ったもの モチベーション 使った技術 感想 作ったもの https://sue445.github.io/annict-vod-search/ github.com モチベーション 最近縁があって Annict の編集者*1 になって、気がついた時に各アニメの配信サイトの情報を登録しています。 その時にいちい…

Twitter botをAPI v2移行する(Ruby編)

https://github.com/sue445/pribirthdaybot をTwitter API v2移行した時のメモ tl;dr; 移行先のgem その他に必要になりそうなgem botでAPI v2対応する時の注意点 追記: 2023/07/21 10:40 手順 リフレッシュトークンを作成する botでのAPI v2移行 tl;dr; http…

研鑽Rubyプログラミングを読んだ #研鑽Ruby

最近家で読書する習慣が薄れてたのですが *1 頑張って研鑽Rubyプログラミング(以下:研鑽Ruby)を読みました。 研鑽Rubyプログラミング ― 実践的なコードのための原則とトレードオフwww.lambdanote.com 雑感 読書中のメモ 宣伝 雑感 リファクタリング:Ruby…

gem_rbs_collectionを使ってるgemをいい感じにCIする

前置き やったこと gem_rbs_collectionをsubmoduleとして追加する 手元でrbs validateを叩けるようにする CIでrbs validateを実行する submoduleとしてgem_rbs_collectionをdependabotで定期更新する 前置き gemを作る時にはだいたい最初に bundle gem コマ…

datadog_thread_tracerを作った

ISUCON合わせで作ったやつ第n弾 github.com モチベーション 実装までの経緯 datadog_thread_tracerを使った時 頑張りポイント rbsを書いた モチベーション ISUCONの素振りでパフォーマンスチューニングのために重い処理を threads = [] threads << Thread.st…

mysql2-nested_hash_bindを作った

ISUCON合わせで作ったやつ第n弾です。*1 github.com モチベーション 使い方 頑張りポイント モチベーション 達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践:書籍案内|技術評論社(通称ISUCON本) を読んでた時に SELECT `posts`…

Ruby 3.1.2 with YJIT vs Ruby 3.2.0-dev with YJIT

tl;dr; モチベーション Ruby 3.2.0-devの何がすごいか Ruby 3.2.0-devでRust版のYJITを使う方法 計測対象のアプリケーション 使ったバージョン 比較 CPU ホスト全体 Ruby 3.1.2 + YJIT Ruby 3.2.0-dev + YJIT pumaのmasterプロセスとworkerプロセスをピック…

ISUCONの素振りでisucon11-priorをやった

先週末にisucon11-prior(事前講習のハンズオン課題)をやったのでメモ github.com isucon.net 結果 最終的なサーバ構成 コンテキスト 事前にやったこと:AMI作成 作成手順 AMIから起動したEC2インスタンスへisuconユーザでログインする方法 8時間の素振りで…

Cloud FunctionsにRubyのスクリプトをデプロイする時の裏側

前置き 注意点 Cloud Functionsのデプロイ方法 デプロイ時のログの場所 Cloud Functionsのデプロイで使われるビルド環境 Cloud Functionsのデプロイ時の処理 前置き 個人ツールをCloud Functionsで動かしてるのですがある日突然デプロイできなくなりました。…

sentry-ravenを使ってるアプリは基本的にsentry-rubyに移行した方がよさそう

tl;dr; 経緯 詳しいこと 古いsentry-ravenについて 新しいsentry-rubyについて 注意点 余談:投げたパッチ一覧 tl;dr; SaaS版( https://sentry.io/ )を使ってる場合は sentry-raven から sentry-ruby へ移行推奨 オンプレミス版を使ってる場合にはSentryが…

Cloud FunctionsでRubyを使う時はdevelopmentやtestのgemはインストールされない

前置き 検証コード Gemfile app.rb ローカルでの実行結果 Cloud Functions上での動作確認結果 前置き Cloud Functionsにデプロイする時には gcloud functions deploy を使います。 そこで bundle install も自動で実行されるのだけど、その時に --without de…

#ginzarails にRuby on CIで発表した

RubyKaigi2020 用に準備してた資料の供養として発表させていただきました。 僕が知ってるCIの知見や2020年時点でのCIのトレンドはだいたい詰め込めたと思っています。 connpass ginza-rails.connpass.com スライド

#プリッカソン でprismdb-rubyとfaker-pretty_seriesを作った

prismdb-ruby faker-pretty_series prismdb-ruby PrismDB のAPIクライアント prismdb (0.1.0): PrismDB API client for ruby https://t.co/hW9Zb5NOnt— rubygems_news (@RubygemsN) March 15, 2020 github.com スピード重視で使い慣れたREST APIを使ったけど…

circleci-ruby-orbs v1.5.0をリリースした

https://circleci.com/orbs/registry/orb/sue445/ruby-orbs リリースノート https://github.com/sue445/circleci-ruby-orbs/blob/master/CHANGELOG.md#v150 Ruby 2.7でbundler 2.1.2が入りましたが、bundler 2.1で bundle install --path などの引数がdeprec…

vagantでgem名とrequireする名前が異なるgemを使う時には注意が必要

タイトルが全て 経緯 原因 経緯 https://hub.docker.com/r/sue445/vagrant-aws/ っていうDockerイメージをメンテしてて*1、Vagrant 2.2.6が出たタイミングでDockerイメージのビルドがコケるようになりました https://app.circleci.com/jobs/github/sue445/do…

【CVE 2019-16892】rubyzip v1.3.0にアプデする時は絶対validate_entry_sizesを設定してください

tl;dr; タイトルが全てです 前置き GitHubのSecurity Advisoryで下記のようなPRがきていると思います このPRをマージすればリポジトリのアラートも消えて問題なさそうに見えるのですが、実際にはgemのアップデートだけでは不十分です CVE 2019-16892について…

circleci-bundle-update-prをGitHub Actionsで動かせるようにした

投げたPRはこちら github.com 動機 とある事情でCI用途のパーソナルアクセストークンを撲滅したかった件の一環です。 解説 GitHub Actionsはジョブ実行時に自動でアクセストークンをセットしてくれて便利なんですが、API実行の許可は付与されていても git pu…

condo3と地域.rbカレンダーを作った

夏の進捗です。 令和の夏、進捗の夏— sue445 (@sue445) 2019年8月11日 condo3 condo3について モチベーション ユースケース 技術的なこと 技術の選択理由 開発時に苦労したこと 名前の由来 地域.rbカレンダー 技術的なこと メリット 8/15 16:50追記 condo3 c…

rubicure v1.2.1で平成&令和対応をした

先日 スター☆トゥインクルプリキュア でキュアコスモが発表されました 【スター☆トゥインクルプリキュア 】5人目のプリキュア、キュアコスモのビジュアルを公開!その登場と活躍をお楽しみに!声を担当する上坂すみれさんからメッセージも届きました!https:…

Dependabotの設定ファイルを置くようにした

なにげなくDependabotを見てたらリポジトリに .dependabot/config.yml を置けることを気づいたので置いてみた https://dependabot.com/docs/config-file/ 設定ファイルを置くメリット いつも使ってる設定晒し 解説 default_assignees allowed_updates autome…

index_shotgun v1.0.0とactiverecord-simple_index_name v1.0.0をリリースした

pixela v1.0.0 に引き続き今年2つ目と3つ目のメジャーバージョンアップ。 index_shotgun (1.0.0): duplicate index checker https://t.co/F8uFjJYtGp— RubyGems (@rubygems) 2019年1月6日 activerecord-simple_index_name (1.0.0): Shorten index name https…

pixela v1.0.0をリリースした

pixela (1.0.0): Pixela API client for Ruby https://t.co/PjxRtV7gQQ— RubyGems (@rubygems) January 6, 2019 リリースノート https://github.com/sue445/pixela/blob/master/CHANGELOG.md 新機能はPixela v1.6.0のoptionalData の対応のみ。 github.com …

gitlab_awesome_release v1.0.2をリリースした

gitlab_awesome_release (1.0.2): Generate changelog from tags and MergeRequests on GitLab https://t.co/SHzxzyFsto— RubyGems (@rubygems) December 30, 2018 https://gitlab.com/sue445/gitlab_awesome_release/blob/master/CHANGELOG.md#v102 Ruby 2.…

【追記あり】Travis CIでMJITを有効にしたビルドマトリクスを作る

何番煎じか分からないけど自分用メモ tl;dr; 実行結果 2019/6/19 追記 tl;dr; .travis.yml に下記のようなものを書くだけ script: - RUBYOPT=$RSPEC_RUBYOPT bundle exec rspec matrix: include: - rvm: 2.6 env: RSPEC_RUBYOPT="--jit" - rvm: ruby-head en…

rubocop_auto_correctorを作った

はじめに これはアドベントカレンダーとは全く関係ないいつもの技術エントリです rubocop_auto_corrector (0.1.0): Run `rubocop --auto-correct && git commit` with each cop. https://t.co/cjs54lrl8X— RubyGems (@rubygems) November 30, 2018 github.co…

circleci-bundle-update-prをCircleCIのorbにした

circleci-bundle-update-prとは CircleCIでbundle updateしてPRを作るgemです。(id:masutaka26 氏製作) github.com モチベーション コアの処理はgemになっていてCircleCIから呼ぶ部分は実質ワンライナーなのでorb化不要な気もしましたが、あるとそれなりに…

CircleCI 2.1のorbを作って最速で実アプリに投入した

tr;dr; 【前置き】先日の出来事 orbとは 【今回作ったもの】sue445/ruby-orbs モチベーション 準備 使い方 補足 CircleCI 2.0から2.1に移行したPR ついでにHerokuにデプロイするやつもorbに寄せた Before After 補足 post-deploy Context one more thing 追…