Ruby
Hanami v2.0を試そうとしているのだけれど、まだHanami v2系にはHanami Modelがリリースされておらず、rom-rbを直接使うことが推奨されている状態なので、rom-rbを使ってDBのマイグレーションを行っていたのですが、これロールバックはどうするんだろうか?…
何年も前に社内向けにシンプルなアプリをRailsで作っていたのだけれど、長いことメンテナンスできずにいた。 Rubyのバージョンも古いし、Railsのバージョンも古かったので、バージョンアップをしないとなぁと思っていたのだけれど、やったところでまた数年後…
小ネタです。migrationの際にテーブルコメントを追加する情報は検索すればいくらでもヒットするんですが、ActiveRecordでテーブルコメントを参照する方法はなかなかヒットしなかったので、メモしときます。 環境情報 Rails 6.1.6.1 Ruby 3.1.2 方法 ヒットし…
環境情報 Rails: 6.1.6.1 Ruby: 3.1.2 Database: PostgreSQL 11.x Elasticsearch 7.x DBに保存したらElasticsearchも更新されたい Railsプロジェクトで、データベースへの保存を行ったら同時にElasticsearchへの反映も行いたい、というケースが出てきました…
RSpecで、ブロック引数に渡されたオブジェクトが、とあるメソッドを実装しているかどうかによって処理を変える件のテストをしたかったのだけれど、どうやったらいいかわからなかったので調べました。 テストしたい処理 class Hoge < ApplicationRecord def f…
小ネタです。rubocopのバージョンアップを行ったら、新しいルールで怒られが発生しました。 C: [Correctable] Style/FetchEnvVar: Use ENV.fetch('FOO') or ENV.fetch('FOO', nil) instead of ENV['FOO']. Correctableなので、bundle exec rubocop -Aで自動…
先日、新しくgemを作ってリリースしました。 Hash#digの逆を行う、Hash#buryメソッドを定義したgemをリリースしたぞい。digは掘るなので、埋めるの意味のburyにした。https://t.co/6OQdcE22Q7— パトラッシュ@リーダー業 (@patorash) 2022年1月26日 リポジト…
少し前ですが、Rails 7.0がリリースされましたね。弊社のプロダクトもRails 7.0系にアップグレードしていきたい…。しかし、そのためにはRailsに関連するgemのバージョンが対応していなければなりませんよね。はい、ということで、プロダクトで使っている自作…
rake taskではreturnが使えないのは知っていたので、引数チェックに引っかかったらnextを使っていたのだけど、それだと次の処理に移動してしまうし、終了コードが0となって正常終了扱いされてしまうなと気付きました(今更かよって感じですが) じゃあexit(1…
長年の悩みで、git commitするタイミングでrubocopを実行したいというのがあった。以前に個人的にgitのpre-commitを使って行う方法を調べて、それをやっていたのだが、それだと自分の環境ではできるけれど、他の開発メンバーに同じことを適用できない。また…
今月初頭に社内ISUCONを開いたという記事を書きました。 patorash.hatenablog.com その環境を仮想環境で構築してローカルでも試せるようにとVagrantを使って準備したのですが、自分がそれを使っていてハマッたのでメモ。 Vagrant上では、nginxを経由して表示…
これは、以下の記事を参考にしていたときの副産物ですが、ちょいちょいハマったところがあるので記事にしておきます。 techracho.bpsinc.jp ローカルでついうっかりsystem specを行うと、初回アクセス時にwebpacker:compileが実行され、最初のテストがほぼ、…
課題:データを弾くためにN+1問題が発生していた 数年前に実装した、CSVデータをDBにインポートするためのプログラムがありました。 単にインポートするだけならいいのですが、除外リストに登録済のデータは弾いてほしい、という要望があり、そのように実装…
この記事はQiitaにも書いていますが、一応ブログにも同様のものを載せておきます。 qiita.com graphql-rubyはリソースの参照元のデフォルトがActiveRecordなので、それをElasticsearchに変更したかったのですが、ライブラリがなかったので自分で実装しました…
この記事を読んで、SeleniumからCupriteに移行できたらテストがまた速くなるんじゃないか?と思ってここ数日動作検証してるのですが、思った以上にうまくいかないので、一旦移行を諦めようかなという気持ちになっています。 techracho.bpsinc.jp とはいえ、…
auditedというgemを使って、監査ログを保存するようにしたいと思い、現在調査中。 github.com 大体はよさそうなので、採用したいと思っているのだけれど、困ったのが、rails consoleとかでデータ変更されたとき。データ変更の履歴は残るものの、誰がやったか…
私はimyouというニックネーム管理用gemを公開しているのですが、開発時にPostgreSQLを使っていました。 しかし、RailsのデフォルトのデータベースはSQLiteなので、SQLiteで開発したほうがよかろうと考え、SQLiteに変更してテストを実行したところ、なんと落…
最近のPRのレビューをしているときに、二次元配列のデータを入れ替える処理をしているところがあったので、レビュー後にチャットで意見交換していたら綺麗な感じにできたのでそれをメモして残しておく。 transposeを使うのがミソなのだけれど、transposeを使…
Rails 6からだけれど、モデルのエラー確認にof_kind?メソッドが使えるらしい。 最初は、伊藤さんのQiitaの記事を見て、be_addedメソッドを知った。これも便利そうだなぁと思っていたのだが、そのコメント欄にRails 6からof_kind?が加わったと書いてあった。 …
自分のための備忘録です。 seed-fuを使ってデータ投入していたのだが、データを作り直そうと思ってseed-fuを再び実行したところ、minioのバケットを作るところでコケた。原因は、既にバケットがあったからだった。 require 'aws-sdk-s3' storage_yml = YAML.…
仕事で、とあるRailsアプリを作っているのですが、そこでstimulusを採用していました。そうしたらちょうど少し前にstimulusのバージョン2.0.0がリリースされていました。このバージョンアップによって、かなり書きやすくなりました。 今までと何が違うのか?…
引き続き、ActiveStorageネタです。 simple_formを使ってActiveStorageのdirect_uploadの設定を書くと、うまくいきません…。 = simple_form_for(@post) do |f| / 略 .form-inputs / 動くけれどダイレクトアップロードにはならない… = f.input :images, as: :…
さっきこんな記事を書きました。 patorash.hatenablog.com 今度は、更新で画像を追加しようとしたところ、上書きされてしまいました。 追加されると思っていたのでびっくりな挙動でしたが、その辺りはこのissueにあります。 github.com Rails5までは、追加が…
Rails 6.0でとあるアプリを作っているのですが、ActiveStorageを使って画像を添付しています。登録は比較的簡単に行えたのですが、画面から画像のみ削除する方法がいまいちわからなかったので調査しました。 コード(修正前) モデル 複数の画像が添付できる…
最近は担当製品の関連アプリを改修しているのですが、Railsのバージョンを5.2系から6.0にアップグレードしました。そのときにActiveStorageでハマったので備忘録を残しておきます。なお、担当製品は既にRails6にしてあります。ただし、まだActiveStorage使っ…
RSpecの本はすごく前にThe RSpec Bookを読んでいたけれど、もうすでにだいぶ古いし、他の人に薦められるかってのと自分が知らないことが書いてあるかもってことで、Everyday Rails RSpecによるRailsテスト入門を買って読んでみた。 leanpub.com とはいえ、買…
元ネタはこのQiitaの投稿。 qiita.com この投稿のように、UserモデルとArticleモデルが1対多になっていて、ユーザーに紐づいた最新の記事を取得したいこととかはあると思います。私がやってるプロジェクトでも似たようなことがありました。ユーザーに紐づい…
ストレージを伴うテストのためにminioを使うようにしようとしたのですが、設定をしただけではうまく動きませんでした。 timecopを使っているところで、aws-sdkがエラーを起こしました。timecopは時間を固定したり過去・未来に移動したりするライブラリです。…
社内のRailsアプリのバージョンアップを行ってテストを実行したところ、システムテストが通らなくなりました。 ArgumentError: unexpected value at params[:whitelist_headers] というエラーが出たので、ググったところ、RailsにPRが…。 github.com これはR…
過去にこのような記事を書いていました。 patorash.hatenablog.com この記事を見返しながら、他のHerokuアプリケーションにもjemallocのbuildpackを適用しようと思ってたのですが、なんとなくbuildpackのページに移動したところ、メンテナンス停止になってい…