patorashのブログ

方向性はまだない

Ruby on Rails

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(メモリ関連のエラー)が頻発していました。このときに行った設定はどうも一…

RailsにPR送ったらマージされた

Railsに含まれているgem web-consoleに自分のPRが取り込まれた github.com 感動を残しておくためにブログに書いとく。 事の始まり 先日、Rails 6.0.0 rc1でrails newして、ごにょごにょと進めていたら、ログに以下のメッセージが出ていた。 Cannot render co…

ActiveRecordのmodel名が〜Typeで終わるものをgraphql-rubyで扱う

なかなか情報がなかったので、書いときます。 model名が◯◯Typeで終わることって、ままあるのかなと思います。CompanyモデルとCompanyTypeモデルのような感じで。これをGraphQLでTypeを定義しようとすると、Types::CompanyTypeとTypes::CompanyTypeTypeになっ…

GraphQLのスキーマ情報からドキュメントを生成する

漠然と考えていたことが既に書かれていたので、非常に参考になったし面白かった。 developer.kaizenplatform.com GraphQL APIの設計を中心にフロントエンド、バックエンドをそれぞれ作っていくと、それぞれの実装待ちが発生しなくてよい。しかもAPI仕様のド…

GraphQLでWebAPIを作っている

自分が担当のプロダクトのWebAPIを整理していかんとほんまヤバいなぁ〜と思いつつ、数年過ごしていましたが、ここ最近で急激にGraphQL熱が湧き上がり、今お試しで実装していってる最中です。 ビビッときたのは、@gfxさんの書かれたGraphQL徹底入門の記事から…

WSL + Docker for WindowsでRailsアプリを動かしたが遅すぎた

これはノウハウとかじゃなくてただの日記。 この前久々にLenovoのPCを触れたので、Docker for Windowsの設定をして、WSLでdocker-compose upできて喜んでいたが、Railsアプリを起動するところまで時間が取れなかった。昨日ようやく少し時間が取れたのでやっ…

CircleCIにreviewdogを飼うことにした。

Rubocopを一応入れているのに、滅多に動かしてなくてあんまり意味を成していなかった。issueにずっとあったCIにRubocopを取り入れるというやつに着手しようと思ってようやく取り組み始めた。 reviewdogを知る CircleCIのワークフローにRubocopのチェックを入…

Amazon Linux 1でImageMagick6系の最新版を入れる

gem rmagick 3.0.0を入れようとしたら、bundle installのときにImageMagickのバージョンが古いという理由で落ちました。というわけで、ImageMagickのアップデートやります! qiita.com ここに書かれてることをやれば概ね大丈夫かと思いますが、最初CentOS6系…

database.ymlのschema_search_pathにpublicを書いたらあかん

PostgreSQL 11にアップデートしようとしていたときに起きました。 docker imageを11に変更して、CircleCIでテストを流そうとしたところ、bin/rake db:structure:loadで失敗しました。 psql:/home/circleci/workspace/db/structure.sql:15: ERROR: schema "pu…

1つのspecファイルをparallel_testsで並列処理する方法

parallel_testsでテストの並列化していくのが好きなのですが、まだまだ課題に思っていたことがありました。それは、テスト対象ファイルがCPUコア数より少ない場合、フルに並列化できないこと…。 つまり、CPUコア数が4つで、テスト対象ファイルが1つの場合、1…

Capybara3にアップデートしたらハマったことをまとめる

長いことCapybara2系を使っていた。ようやくCapybara3系にアップデートする暇が取れたので作業に着手したら、めっちゃテスト落ちた…。ので、その原因と対策を書いていく。 whitespaceが含まれるようになった。 以下のブログ記事にも書かれていますが、半角ス…

コンポーネント内でreCAPTCHAを使う場合の注意点

昨日Qiitaに書いたのですが、knockout.jsでreCAPTCHAのURLを貼ってデフォルトの動作に任せると、うまく動きませんでした。 qiita.com 原因はコンポーネントの中で使っているから、コンポーネントの描画が終わる前にreCAPTCHAのデフォルトのonloadイベントが…

CircleCIで前に落ちたテストを先に検証するWorkflowを組んだ

昨日、CircleCIで失敗したテストのファイル一覧を取得するという記事を書きました。 patorash.hatenablog.com 今度はそれを使って、CircleCIで前に落ちたテストを先に検証するワークフローを組みました。 こんな感じです。 CircleCIで再テストを先に行うワー…

CircleCIからテストが失敗したファイル一覧を取得するRails Runner作った

表題の通りですが、作りました。 CircleCIで失敗したテストをローカルで流したいのだけれど、わざわざCircleCIのページを見に行くのもあれだし、どうせならガバッと実行したいな〜と思ってCircleCI APIを叩いて取得できるんじゃないかな?と思って調査してみ…

ActiveJobのテスト周りの見直しで学んだことのメモ

最近テストが不安定になって、その修正をしていっていたらActiveJobが絡むあたりがまた不安定になったので原因を探ろうとしたのだけれど、ActiveJobのテストの設定周りなんて久々すぎて忘れまくっていたのでここで一旦整理しておく。 テストでActiveJobを同…

rake taskで実行確認をとるためにhighlineを使う

highlineという対話式のCLIを提供するgemがあります。 github.com rake taskで検証用データの自動生成を行いたかったのだけれど、検証用なので本番環境で実行されたら困ります。 そこで、本当に実行するか確認を取るようにしたかったので、今回はこれを使い…

Rails 5.2でcacheのkeyにTimeWithZoneを渡すと落ちる件

表題の通りなのですが、テストも通ってよっしゃー!stagingにデプロイじゃー!と意気揚々としたものの、キャッシュを使っている箇所の表示がされない不具合が…。 とはいっても一部だけで全部のキャッシュが動かなくなったわけではなさそう。調べてみた。 ロ…

Rails 5.2からReferrer-Policyの値が設定されているので気をつけよう

Rails 5.1.6.1から5.2.2にアップグレードして検証していたところ、何もしていないのにJavaScriptの処理が壊れた。 その処理はCORSで有料のライブラリをダウンロードしてから実行しており、特にJS側も変更していなかったのだけれど、急にダウンロードできなく…

ニックネームを管理するgem imyou(異名)をリリースした

仕事で使うためにgemを作ったったという話です。 自分が担当している製品は、情報を収集して、それを集計して…みたいなことをよくやるのですが、その時の課題が『表記揺れ』だったりします。よくありますよねー。ASUSのことをどう読むのか?みたいな問題。い…

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

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

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

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

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

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