patorashのブログ

方向性はまだない

Ruby on Rails

ActiveJobのコールバックは2系統に分かれている

ActiveJobの処理が時々コケることがあったので調査した。 Active Job の基礎 - Railsガイド を参照したところ、ActiveJobのコールバックは以下のようになる。 before_enqueue around_enqueue after_enqueue before_perform around_perform after_perform 問…

Elasticsearchを5.6から7.9にバージョンアップ

過去にElasticsearchのバージョンアップをしたのだけれど、そのバージョンも既にEOLとなり、早く最新のバージョンにしたいと思いつつも、なかなかできずにいた。 ようやくできるタイミングがきたので、取り組んでみた。まだステージング環境では検証が終わっ…

aws-sdk-s3を使いつつ、timecopで時間をずらす

ストレージを伴うテストのためにminioを使うようにしようとしたのですが、設定をしただけではうまく動きませんでした。 timecopを使っているところで、aws-sdkがエラーを起こしました。timecopは時間を固定したり過去・未来に移動したりするライブラリです。…

コンテナのTimezoneは統一しよう

Railsアプリの開発中に、ちょっと物によっては時間がかかる処理があったので、ActiveJobに処理を移行させたのですが、perform_nowとperform_laterでデータを保存した時のcreated_at等が9時間ずれる現象が発生しました。 結論から書くと… 結論は、rails serve…

Rails 5.2.3から5.2.4.3に更新したらActiveStorageでエラー発生した

社内のRailsアプリのバージョンアップを行ってテストを実行したところ、システムテストが通らなくなりました。 ArgumentError: unexpected value at params[:whitelist_headers] というエラーが出たので、ググったところ、RailsにPRが…。 github.com これはR…

herokuでjemallocのbuildpackの新しいバージョンが出ていた

過去にこのような記事を書いていました。 patorash.hatenablog.com この記事を見返しながら、他のHerokuアプリケーションにもjemallocのbuildpackを適用しようと思ってたのですが、なんとなくbuildpackのページに移動したところ、メンテナンス停止になってい…

activerecord-importの削除は難しい

Rails6にしたので、insert_allメソッドが使えるようになったので、意気揚々とgem activerecord-importを削除しようと修正していってたのだけれど、思ったより難しそうだったので、一旦止めることにした。 activerecord-importの削除が難しい理由 recursiveオ…

PaperclipがImageMagickのデフォルト設定の影響で動かなくなったのを直した

昨日、Macのセットアップが終わったという話をしました。 patorash.hatenablog.com そして、Docker立ち上げて作業後にrspecを流したら、全然関係ないところがエラーで落ちるじゃないですか… pryで止めて、@model.errorsを出力してみると… @details={:report=…

SprocketsをやめてWebpackerに移行したのでどうやったか公開する

ようやくSprocketsからWebpackerに移行したので、そのためにやったことをまとめておきます。 移行前の状態 Railsのバージョンは6.0系 Sprockets4 CoffeeScript Sass Bootstrap3を使用 yarnは使ってる 筆者(私)はECMAScriptに関してはそこまで詳しくなくて…

Docker上でWebpackerがファイル変更を検知できない件に対応した

担当しているRailsプロジェクトのフロントエンド環境をSprocketsからWebpackerに移行しようとしていて、ここ最近辛い毎日です。 とりあえず、scssの移行は終わったので、今はCoffeeScriptのコードをできるだけそのままでWebpackerに乗っけようとしているので…

7年開発しているプロジェクトをRails6にアップグレードした

Railsのアップグレード作業は検証含めて非常に面倒なもので、結構遅れがちなのですが、どこかで気合い入れてやらなければなーと思い、エイヤッとやってやりました。Rails3からやってるプロジェクトなので負債もまだまだ多いですが、とりあえずメジャーバージ…

gem doorkeeperの承認画面に遷移しない場合があった

gem doorkeeperで連携アプリケーションにログインをさせようとしたところ、認証後に権限の承認画面に遷移せずに普通に認証アプリケーションのログイン後の画面に遷移してしまいました。本来ならば、連携アプリケーションにログインしてほしいのに…。 原因 de…

GETメソッドのFormでの画面遷移をTurbolinksに委ねる

今作ってるアプリケーションではTurbolinksを効かせてて、かなりいい感じだな〜と思ってるのですが、一覧で検索した結果や表示件数を変更した場合に、ページの更新が発生してサクサク移動してたのに、ここでもたつくなぁ…と課題に感じていました。 なんとな…

WSL2 + DockerでRailsの変更を検知しないのを修正した。

表題の通りなのですが、ファイルの変更を行ってからブラウザをリロードしても変更が反映されませんでした。反映しなおすには、Railsサーバを再起動しなければならず、非常に面倒です。 調べたところ、Vagrantでの開発とかでも同様のことが起きたりしているぽ…

deviseで論理削除を実装するときの手順をまとめておく

新しいRailsアプリを作るたびにやっている気がするので、一旦まとめておこうと思います。 今回公開する手順は、削除済みのメールアドレスで再登録可能な論理削除の実装方法です。 Deviseとは? Deviseはアカウント認証管理のgemです。Webアプリケーションに…

gem buoysを使ってパンくずリストを作る

今ちょっと新しいRailsアプリを作っていて、そこでパンくずリストが欲しいなぁ〜と思ったので社内のチャットで「パンくずリストを作るためのgemのデファクトスタンダートってやっぱりgretelですか?」と聞いたところ、I18n対応できるbuoysというgemがあるの…

RailsでModelとDBの制約の検証をするときの方針について

弊社の若者のPRでコメントしたんだけれど、これは普通に記事にできるかなと思ったので転載する。 事の経緯 Modelでのバリデーション メリット デメリット データベースでのバリデーション(Unique制約, Not Null制約, Check制約等) メリット デメリット テ…

CircleCIでdocker-composeを起動してテストを実行

ようやく、CircleCIにてdocker-composeを使ってテストを流して問題なく終了するようになったので、そのためにやったことを書いておきます。 これまでの経緯は過去の記事を参照のこと。 patorash.hatenablog.com patorash.hatenablog.com patorash.hatenablog…

docker-composeでseleniumを使っててChromeがクラッシュする際に対処法について

先日こんな記事を書いていました。 patorash.hatenablog.com この記事では、Capybaraの設定について取り上げていたのですが、CapybaraがInvalid session idのエラーを起こす原因については特定できていませんでした。おそらくメモリが不足しているから、とい…

第22回岡山Ruby,Ruby on Rails勉強会で登壇してきた

昨日になりますが、約2年ぶりに岡山Ruby,Ruby on Rails勉強会が開催されました。 そんなに間が空いてたかな…と思ったけれど、確かに空いてた。 今回は、登壇者として申し込んでいました。 自分の発表 追記 資料を作るに当たって 他の発表について パズルで学…

docker-composeでseleniumを使っている際のCapybaraの設定について

以前にこんな記事を書きました。 patorash.hatenablog.com 今回はこれの続きみたいなものです。 まだCircleCIでのテスト実行まで至らず、ローカルでテストが全部通ることを目標に調整中です。 featurespec以外のテストは完走したので、問題はfeaturespecのみ…

Railsでfavicon.icoがないと言われるケースへの対応

時々発生していた原因不明のfavicon.icoがないと言われるケース…。favicon_link_tagは使っているのでおかしい!と思いつつ、いつか調べようと思っていたら、Seleniumがめちゃくちゃ大量のエラーを出し始めたので慌てて調査開始。 favicon_link_tag について …

Macで開発環境のDocker化に取り組んでいるので一旦まとめる

MacでRailsアプリを開発しているとなぜかセグメンテーション違反が起きまくって開発に支障が出てきたので、開発環境を全部Dockerに載せてしまおうと思ってここ2週間くらい取り組んでいます。 とりあえず、CircleCIのテスト以外はちゃんと動くようになったか…

MacのRails開発環境でやっぱりセグメンテーション違反起きた

以前にこういう記事を書きました。 patorash.hatenablog.com しかし、PostgreSQLではセグメンテーション違反は起きなくなったのですが、Redisに接続する箇所で起きるようになったので、抜本的な問題解決にはなりませんでした。 ということで、私の中でMacでR…

pgのバージョンを0.21.0にしたらセグメンテーション違反が起きなくなった

少し前に、Railsを起動するとセグメンテーション違反が起きたが、原因がわかった的な記事を書いてた。 patorash.hatenablog.com これで落ち着いたかと思いきや、全然落ち着いておらず、またもやセグメンテーション違反が起きた。シングルプロセスでアクセス…

Rails 6のCredentials方式をRails 5.2にバックポートした

私が担当している製品の機密情報の管理は、Rails 5.1で導入されたEncrypted Secrets(secrets.yml.encを使う方式)を使っていて、5.2になって導入されたCredentials方式の導入は見送っていました。 理由は、5.2のCredentials方式だと、各環境毎の設定が行えな…

Macでrails起動時に発生したセグメンテーション違反の原因がわかった

過去に、こんな記事を書いていました。 patorash.hatenablog.com ずっと騙し騙し、gemの再インストールをしながら使っていたのですが、いよいよresqueがまともに動かないときが頻発したので、ちゃんと調査を開始。 ちなみにこの記事を書いている時点での私の…

mutationでバルク処理をする場合のアプローチ

mutationでデータを更新するGraphQL APIを作りました。しかしそのAPIが時々しか呼ばれないならいいのですが、頻繁に何度も呼ばれるケースだとAPIのへのアクセスが複数回になり無駄が多いので、バルクアップデートみたいなことはできないか?と指摘を受けまし…

Mojaveでrailsを起動するとpgでセグメンテーション違反になる場合がある

追記 Macの不具合が原因らしいことを突き止めたので色々やったら直ったぽいのでリンクを貼っておきます。 patorash.hatenablog.com 以下、元々の記事 開発マシンを新しいMBPに変えたと同時にMojaveになっていたのですが、そこで開発していると、時々Railsが…

Herokuでpuma_worker_killerを適切に設定する

昨年、こんな記事を書いていました。 patorash.hatenablog.com これで設定できていたと思ったのですが、アクセスが集中したときにワーカーの再起動が起きず、スワップが発生してR14(メモリ関連のエラー)が頻発していました。このときに行った設定はどうも一…