patorashのブログ

方向性はまだない

Ruby on Rails

ActiveRecordのscopeの使い方について後輩に説明した

この前、後輩のPRのレビューを行なっていたら、scopeの使い方に一貫性がなかったので、これは説明資料を作っておいたほうが後々にも使えていいなと思ったので、スライドを作っておきました。 docs.google.com ここ最近プレゼンテーションzenを読んでいたので…

Herokuでpumaを使う。jemallocも使う。

Herokuで稼働しているアプリのApplicationServerをunicornからpumaに変更することにした。 理由は、Capybaraを3系にアップグレードしようとしたところ、デフォルトのサーバがpumaらしく、このまま放っておくとテスト系のライブラリもレガシー化していきそう…

elasticsearch-railsからElasticsearchの設定を変更する方法

Elasticsaerchのインポートを速くしたいと思って現在試行錯誤しているのだけれど、全然速くならなかったので一旦コードを元に戻そうかと思っている。しかし、設定を変更するための仕方を調べるの結構手間取ったので、とりあえずそれだけ残しておく。 Foo.__e…

CircleCIのworkflowを使ってコードのチェックアウト、ライブラリのインストールを共通化した

私が担当している製品では、RailsのテストをCircleCIで4並列で動かしているのだけれど、これがいちいち各コンテナ毎にコードのチェックアウト、ライブラリのインストールをしているのは無駄じゃないかなー?と常々思っていました。これが、workflowを使った…

CircleCIのworkflowを使ってbundle updateのPRを自動化する

以前にHerokuとCircleCIを使ってbundle updateのPRの生成を自動化していました。 qiita.com しかし、最近はCircleCIのworkflowを使えばHerokuを使わずともCircleCIのみで完結しそう!ということだったので調査してみました。 方法が公開されていた circleci-…

Railsのエラー画面の謎挙動にハマッた

Railsのcontrollerで、トランザクションを使っているところで、rescueブロックの処理が書いてあるのにそこに辿り着けていない現象に遭遇しました。 悩んでいることをチャットワークに書いたら、同僚の @kazuhisa1976 さんが、小さいRailsアプリを作って検証…

部分インデックスでミスった話

新たにカラムを追加することになり、その条件が Null許可 ユニークであること ただし論理削除を考慮する となったので、アーハイハイ、部分インデックスですねと思って設定していて、テストもしていたのだけれど、考慮漏れがあったので自戒を込めて書いてお…

RailsアプリにreCAPTCHAを導入した

担当アプリのお問い合わせページが中国からのスパム投稿を行われるようになってしまったので、急遽IP制限を追加して一時的に凌ぐことにしたのですが、完全な対策ではないのでreCAPTCHAを導入することにしました。 reCAPTCHAとは? reCAPTCHAは、Googleが提供…

webpackerでfont-awesome5を使ってみた。

Rails5.1.5で趣味アプリを作っていってるんですが、css frameworkはbootstrap4を使っているのですが、bootstrap4からはどうもアイコンフォントは別で準備されることになったっぽいので、安定のfont-awesome5を使うかーと思ったので入れてみました。 それにし…

Stimulus Handbookを大体やったので所感を書く

Ruby on Railsを開発したDHHの会社のBasecampがStimulusというJSライブラリを発表したという話があり、気になっていたので試してみました。 Stimulusとは? Stimulusはいわゆるフロントエンド系のJSライブラリなのですが、JSでゴリゴリにHTMLを操作する系で…

開発環境でAWS S3の代替としてminioを使う

ほんの最近まで、開発環境でもAWS S3を使っていたのですが、minioっていうのがあるよと同僚に教えてもらっていたので、とりあえずissueに積んだまま数ヶ月が過ぎていました。そしてちょうどこの間、間隙を縫って作業できそうな時間ができたので、minioに移行…

SearchBoxのmax_result_windowは変更できない

私が関わっている製品で、HerokuのElasticsearchのアドオンはSearchBox(Searchly)を使っているのですが、これでハマったのでちょっと調査した結果を残しておきます。 検索結果画面のページ移動のところで、ページ番号の大きなページにアクセスしようとすると…

並列処理でActiveRecordの処理時間を短縮する

ここ最近は並列化による処理速度アップを色々試しています。 Railsプロジェクトのデータに少々不備があることに気づいたので、それを修正するために該当データを抽出しようと思って雑にループを回したら、データ量が多いせいか、全然終了しませんでした。業…

CircleCI 2.0でparallel_testsとknapsack_proを使って爆速化

前回は、こんな記事を書きました。 patorash.hatenablog.com チーム内で、「多少は速くなりましたよ」という報告をしていたところ、「でもknapsack_proを使ってテスト時間の均等化したほうがまだ高速だね」という話に。knapsack_proはお試しで使ったことはあ…

Circle CI 2.0でparallel_testsを使ってお金をかけずに高速化する

CircleCI 2.0でだいぶテストが速くなったものの、1回のテストが20分くらいかかっているので、もっと速くしたいなぁと思っていました。お金を払えば並列化は簡単にできるのですが、CircleCIの並列化にも今のところ上限があり、1度のテストで16コンテナまでし…

Elasticsearchを1.7系から5系にバージョンアップした

私が仕事で携わっているRailsプロジェクトで使っているElasticsearchのバージョンアップを行った。1.7系から一気に5.5.2 5.1.2*1にアップデートしたため、ハマりどころも多かったので、自分の備忘録のために記録しておく。 Dockerを使ってElasticsearchのバ…