patorashのブログ

方向性はまだない

Ruby on Rails

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

2019-01-25 追記:CircleCI 2.1を使うとデフォルトで共通化ができるようになっています。 patorash.hatenablog.com 以下より、投稿時の原文です。 私が担当している製品では、RailsのテストをCircleCIで4並列で動かしているのだけれど、これがいちいち各コン…

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のバ…