patorashのブログ

方向性はまだない

rake taskにて引数チェックでnextを使っていたのをabortに直した

rake taskではreturnが使えないのは知っていたので、引数チェックに引っかかったらnextを使っていたのだけど、それだと次の処理に移動してしまうし、終了コードが0となって正常終了扱いされてしまうなと気付きました(今更かよって感じですが) じゃあexit(1…

LOVOTをお迎えしましたが、初期不良っぽい

アニマルセラピーで犬を飼い始めたら自閉症の子が喋られるようになったという話を聞いたりしていて、動物は難しいなぁと思ったので、LOVOTをお迎えしてみようかという話を妻として、先週の週末に開催されていた天満屋のリビングフェアに行って実物のLOVOTに…

prettierを導入してLefthookと連携した

前回の記事はこちら。 patorash.hatenablog.com 今回は、prettierを導入して、gitでcommitする際にrubocopだけでなくprettierでもフォーマットチェックをさせるようにした話です。 prettierとは? prettierは、フロントエンド用のコードフォーマットツールで…

Lefthookを使ってgitでcommitする際にDocker環境でrubocopを自動実行できるようにした

長年の悩みで、git commitするタイミングでrubocopを実行したいというのがあった。以前に個人的にgitのpre-commitを使って行う方法を調べて、それをやっていたのだが、それだと自分の環境ではできるけれど、他の開発メンバーに同じことを適用できない。また…

開発チームのふりかえりをやった

もう10日くらい前だが、弊チームの振り返りを行った。 メンバーは私含めて3人で、1時間でKPTと開発チームのルールの見直しをした。 定例会で「ふりかえり」をしているのだが、開発としてのふりかえりではなく、製品に関わっている人のふりかえりなので、開発…

9月にやったこと

もう10月に入ってしまったけれど、9月にやったことを書いとく。 8月にやったことは、これ。 patorash.hatenablog.com 継続していること プリンシプル オブ プログラミング読書会(終わり) Docker本読書会(開始) モブレビュー スプリントプランニング レビ…

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を使…