patorashのブログ

方向性はまだない

GraphQLでActiveRecord::RecordNotFoundをいい感じに処理する

GraphQLを使ってWebAPIの構築をやっているのですが、対象のデータが存在しない(ActiveRecord::RecordNotFound)場合にどうすればいいかがわからなかったので調べました。 結論 graphql-rubyのエラーハンドリングのところに書いてありました。 graphql-ruby.…

Railsのモブバージョンアップ会を開いた

先週ですが、うちのプロダクトのRailsのバージョンを6.0系から6.1.4.1にアップグレードしました。その際に、1人でアップグレードを行うのではなく、チームメンバー3人全員でバージョンアップを行ったので、それについて書いておこうと思います。 なぜ全員で…

スマホ用ゲームコントローラーGameSir X2 Type-Cを買ったのでレビューする

もう1か月前近くになりますが、スマホでゲームできるようにしたいなぁと思っていたので、スマホ用ゲームコントローラーを買いました! my new gear pic.twitter.com/0l51Llvyqv— パトラッシュ@エキスパート職 (@patorash) 2021年8月12日 最初はボーナスも出…

8月にやったこと

9月になったので、8月にやったことを書いておく。7月のやつはこれ。 patorash.hatenablog.com 継続して取り組んでいることは、以下の通り。 プリンシプル オブ プログラミング読書会 モブレビュー スプリントプランニング レビューする曜日を決める等 8月は…

VagrantでポートフォワードしながらActiveStorageのファイルを表示する

今月初頭に社内ISUCONを開いたという記事を書きました。 patorash.hatenablog.com その環境を仮想環境で構築してローカルでも試せるようにとVagrantを使って準備したのですが、自分がそれを使っていてハマッたのでメモ。 Vagrant上では、nginxを経由して表示…

HerokuのアドオンのSearchBoxが最新のElasticsearchクライアント(7.14.0)でUnsupportedProductErrorになる件

昨日発生したのですが、テストも通ってステージング環境に反映したら、表題の件が起きました。 Elasticsearch::UnsupportedProductError The client noticed that the server is not a supported distribution of Elasticsearch. これはもしや、アレでは…。…

system spec実行時に事前にwebpacker:compileさせる

これは、以下の記事を参考にしていたときの副産物ですが、ちょいちょいハマったところがあるので記事にしておきます。 techracho.bpsinc.jp ローカルでついうっかりsystem specを行うと、初回アクセス時にwebpacker:compileが実行され、最初のテストがほぼ、…

社内ISUCONのベンチマーカーをisucandarで作った話

前回の記事で、社内ISUCONをしたという話を書きました。 patorash.hatenablog.com そのときにベンチマーカーを作るのに、isucandarを使ったので、あとでまた記事を書く!と宣言していたのですが、なかなか書けず…。でも忘れないうちに書く! isucandarとは?…

社内ISUCONとしてRails ISUCONを開催した

ようやくやりたかった社内イベントであるRails ISUCONを開催できたので、そのことについて書いていく。 Rails ISUCONの目的 目的は、主に3つ。 自身の知見をチームメンバーに拡げる(チームメンバーから知見を得る) コミュニケーション 様々な角度からRails…

7月にやったこと

もう8月になってしまったけど。 6月のやつは、これ。 patorash.hatenablog.com 継続して取り組んでいることは、以下の通り。 プリンシプル オブ プログラミング読書会(Effective Rubyを読み終わったので) モブレビュー スプリントプランニング レビューを…

exists?で起きるN+1問題に対処するためにSetを使った話

課題:データを弾くためにN+1問題が発生していた 数年前に実装した、CSVデータをDBにインポートするためのプログラムがありました。 単にインポートするだけならいいのですが、除外リストに登録済のデータは弾いてほしい、という要望があり、そのように実装…

プリンシプル オブ プログラミング読書会を始めた

EffectiveRuby読書会が先週終わったので、今週からプリンシプル オブ プログラミング読書会を始めました。どういう本を読むのかは、チームメンバー3名で候補を出し合ってたのですが、これはパートナーさんが上げてくれた本で、「3年目までに身につけたい内容…

RailsでElasticsearchを使う際のレスポンスはidだけ返せばよかった

表題の通りですが、今まで運用していて全然気づかなかったことでした。 Elasticsearchにクエリを投げると、ヒットした際にレスポンスがめっちゃ長くてdevelopment.logが見づらくなってました。 ログをよく見ると、レスポンスからrecordsメソッドを呼ぶと、ヒ…

6月になってやっていること

先月のやつは、これ。 patorash.hatenablog.com 特に5月から代わり映えしていないのだけれど、継続して取り組んでいることは以下の通り。 EffectiveRuby読書会 モブレビュー スプリントプランニング レビューをする曜日を決める等 主に変更点はないのだが、…

GraphQLの検索先をActiveRecordからElasticsearchに変更する

この記事はQiitaにも書いていますが、一応ブログにも同様のものを載せておきます。 qiita.com graphql-rubyはリソースの参照元のデフォルトがActiveRecordなので、それをElasticsearchに変更したかったのですが、ライブラリがなかったので自分で実装しました…

Selenium WebDriverからCupriteへの移行は難しい件

この記事を読んで、SeleniumからCupriteに移行できたらテストがまた速くなるんじゃないか?と思ってここ数日動作検証してるのですが、思った以上にうまくいかないので、一旦移行を諦めようかなという気持ちになっています。 techracho.bpsinc.jp とはいえ、…

ジュニアNISAするしと思って投資の本を読んだ

ジュニアNISAの口座を開設して、震えながら現金を突っ込んでおきました。なんせ、突っ込んだお金は子供が大きくなるまで引き出せないのです。でもまだ何も買ってません。日経平均3万近いので、今年中に調整があって2万前後になるに違いない!!と思いながら…

5月になってやっていること

4月のことを、この前書いた。 patorash.hatenablog.com もう3週間くらい経ってしまった。なかなかブログを書く時間も取れないほど、日々は慌ただしい。主に、家庭面で。まぁ岡山県も新型コロナの影響で緊急事態宣言が出てしまい、それもあって幼稚園が登校自…

リファクタリングデーでキャッシュ化に取り組んだ話

第三回リファクタリングデーを開催したのだけれど、これがすごくよかったのでまとめておく。 お題はキャッシュ化 後輩氏とパートナーさんは、まだキャッシュにすることの経験がなかったので、過去にそれぞれが実装したところ等でキャッシュ化できそうなとこ…

最近取り組んできたことと新たな課題について

4月のまとめ的な感じになるけれど。 予備知識 現在の開発体制が、私がリーダー、後輩氏、パートナーさんの3名体制である。 私はRails歴9年で今のプロジェクトを最初から担当している。40歳とはいえ新米リーダーである。 後輩氏は4月より新卒入社3年目に入っ…

gem auditedでrails consoleやrake taskの時にデフォルトユーザーを設定する

auditedというgemを使って、監査ログを保存するようにしたいと思い、現在調査中。 github.com 大体はよさそうなので、採用したいと思っているのだけれど、困ったのが、rails consoleとかでデータ変更されたとき。データ変更の履歴は残るものの、誰がやったか…

第31回中国地方DB勉強会で発表しました(録画で)

先週ですが、中国地方DB勉強会で発表してきました。 dbstudychugoku.connpass.com 開催日が平日の夜ということもあり、私自身はリアルタイムで参加できなかったのですが、発表は前からお願いされていたので、なんとか動画を録って主催者のid:ikkitang1211 に…

SQLiteのLIKE演算子はデフォルトでESCAPE文字が設定されていない

私はimyouというニックネーム管理用gemを公開しているのですが、開発時にPostgreSQLを使っていました。 しかし、RailsのデフォルトのデータベースはSQLiteなので、SQLiteで開発したほうがよかろうと考え、SQLiteに変更してテストを実行したところ、なんと落…

Rubyで要素数が異なる二次元配列で行と列を入れ替える

最近のPRのレビューをしているときに、二次元配列のデータを入れ替える処理をしているところがあったので、レビュー後にチャットで意見交換していたら綺麗な感じにできたのでそれをメモして残しておく。 transposeを使うのがミソなのだけれど、transposeを使…

情報格差を減らす取り組みの話

今期に入ってメンバーが私1人から新人(2年目)とパートナーさんが追加されて3名体制になったので、情報格差をなくすための活動に勤しんでいる。 以前にいたメンバーはそれなりに最初からRailsに詳しかったりしていたので、そこまで情報を整理しなくても勝手に…

カラムだけでなく、テーブルにもコメントを追加する

DBのカラムにコメントを追加するシリーズ、いよいよ最後。 テーブルにもコメントを付けていきます。 今までの記事はこちら。 patorash.hatenablog.com patorash.hatenablog.com patorash.hatenablog.com patorash.hatenablog.com テーブルを抽出する テーブ…

コメントのないカラムを抽出してマイグレーション処理を生成する

データベースのカラムにコメントを追加していくシリーズ。 今までの経緯はこちら。 patorash.hatenablog.com patorash.hatenablog.com patorash.hatenablog.com ここまでで、I18nを使ってデータを突っ込んだので、残りはそれらで漏れたテーブル・カラム群と…

メタプログラミングでActiveRecord::Enumの値についてカラムにコメントする

前回はI18nのデータを元にコメントを追加するというやつを書きました。 patorash.hatenablog.com 今回は、さらに踏み込んで、ActiveRecord::Enumの値が何を示しているのかを、メタプログラミングを使ってコメント化しました。 なお、プロジェクトではgem enu…

楽々ERDレッスンを読んだ

TLで良書だというのをチラホラと見かけていたのだけれど、結構古い本なので迷っていたのだが、今でも通用しそうな内容っぽいので買って読んでみた。 TLで見かけてた、楽々ERDレッスンを手にいれたので読んでいく。 pic.twitter.com/f7WEl6mHft— パトラッシュ…

I18nのデータを基にDBのカラムにコメントを追加する

前回、こういう記事を書いてました。 patorash.hatenablog.com Mackerelにテーブル数、カラム数、コメント数を表示できるようにしたわけですが、カラム数に対してコメント数が0でこれから全部やっていくの辛い〜と思っていたのですが、ふと、I18nから引っ張…