Rollbar で Rack::QueryParser::InvalidParameterError が通知されるのを抑止する
Rails のエラーを捕捉するのに Rollbar を使っている場合、次のような通知を受け取ることがあります。
tmux で列数固定で window を分割して複数サーバに SSH する
日頃の業務で複数台のサーバにログインしてオペレーションすることがあると思うんですが、cssh, i2css, tmux-css, xpanes 等便利なツールがあるし、tmux 関連の簡易スクリプトだけでも次のように色々見つかります。
MySQL に INSERT ... SELECT syntax でデータを挿入する fluentd plugin を作りました
fluentd に送られてきたデータを MySQL に挿入する plugin はいくつかあるんですが、送られてきたデータを MySQL 上のデータを使って加工して挿入すると便利そうな案件があったので作ってみました。任意の SELECT
を記述できるので、複数のテーブルと JOIN した結果を挿入することもできます。
https://github.com/abicky/fluent-plugin-mysql-select-insert
Ruby の test-unit で特定のテストだけ実行する
fluentd plugin を作ろうとしたところ、fluentd では test-unit でテストを書くことを推奨しているので test-unit でテストを書こうとしたんですが、ネット上に溢れている情報では test
メソッドを使って定義したテストの実行方法や rake task 経由で指定する方法について言及されているものが見つからなかったのでまとめてみました。
Rails Developers Meetup 2018 で「MySQL/InnoDB の裏側」を発表しました
Rails Developers Meetup 2018: Day 1 で「MySQL/InnoDB の裏側」と題して SELECT クエリの実行フローや InnoDB のインデックス周りの発表しました。MySQL with InnoDB のインデックスの基礎知識とありがちな間違い + α の内容です。
Rundeck の Kill Job や Timeout でプロセスが生き続ける問題の対処方法
Rundeck の “Kill Job” や timeout がちゃんと動いてないという issue は何個も上がっていて、rundeck/#2911 辺りにまとめられているんですが、ここでは server node で (Execute locally) inline script や script file を実行する場合を扱います。
commit をどう分割すべきか 〜コードレビューの観点から〜
普段の開発の中で git の commit の単位に気を遣っている人もいると思うんですが、どういう単位で commit すべきかみたいな話をあまり見かけない気がします。自分自身 GitHub の Pull Request(以降 PR)ベースのチーム開発を何年か経験してみて、「こうすると良さそう」というものが見えてきた気がするのでまとめてみました。
Repro 株式会社に入社しました
社内インタビュー記事でご存知の方もいるかもしれませんが、今年の 8/1 に Repro 株式会社 に入社しました。
Repro を運営している会社です。Repro はグロースハックツールと紹介されることが多いですが、アプリに SDK を組み込むことでコホート分析、ファネル分析等のアナリティクス機能や特定の条件を満たすユーザにプッシュ通知を送ったり、アプリ上でメッセージを表示したりする機能などを提供しているサービスです。
Fluentd 入門 〜運用に必要な基礎知識〜
最近業務で Fluentd を触ることが出てきて入門したんですが、最初のうちはトラブルが起きた時に何が起きているのか、どう対処したら良いのかがさっぱりわからなかったので、「Fluentd ってログの収集とかに使われるやつでしょ?」程度の知識しかなかった過去の自分に向けて「とりあえずこれぐらいは知っておけ!」と言いたい内容をまとめてみました。
Mysql2 の "MySQL client is not connected" について
Rails アプリケーションのドメインロジックを共有するためにバッチでも Rails を使っているケースはあるかと思います。
先日、長時間稼働しているバッチで MySQL サーバの再起動後に MySQL client is not connected
が起きたんですが、数年 Rails を使っていて初めて遭遇したエラーだったので、次の 2 点について調べてみました。