行動すれば次の現実

ほどよくモダンなシステム開発を目指しています。メインテーマは生産性、Ruby、Javascriptです。

Rails

Rubyで文字列がURL形式かどうか正規表現でチェックする | Rails

rubyで文字列がURL形式であるかチェックするには URI::DEFAULT_PARSER.make_regexp.matchを使用すれば良いです。 引数に渡された文字列がURI形式であるかチェックできます。 URI形式であればMatchDataオブジェクト、違う場合はnilが返却されます。 > URI::DE…

最低限知っておきたい!Railsのトランザクション実装例

Railsでトランザクションを使いたい方向けに実例を踏まえてわかりやすく解説をいたします。 RailsにおけるTransaction Railsでトランザクションを使用する場合は、トランザクションの範囲をActiveRecord::Base.transactionブロックで囲む必要があります。 tr…

ルーティングをネストする際のresourcesとresourceの使い分け | Rails

Railsで開発したことがある方は、ルーティングをネストしようとした場合に、resourcesとresourceのどちらを使用すべきか迷ってしまったことがあるのではないでしょうか?(私もその一人です) この記事ではresourcesとresourceの使い分けについて、親リソー…

RailsアプリでRubyバージョンアップする方法(2.6 to 2.7)

この記事では、Railsアプリをrbenvを使用してv2.6.8からv2.7.4にアップグレードする方法を説明します。 インストールされているrubyのバージョンアップを確認する rbenv versions インストール可能なrubyのバージョン一覧を確認する rbenv install --list-al…

HerokuのR14エラーをScout APMで対策する方法 | Rails

Herokuではメモリ使用量がプランの上限を超えるとR14エラーが発生します。 R14はスワップメモリが発生していることを意味しており、発生するとアプリケーションの処理速度が著しく低下してしまいます。 このままメモリ使用量が200%を超えてしまうと、R15エラ…

ActiveModel valid?でバリデーション例外を発生させる | Rails

ActiveModelのvalid?はモデルのバリデーションを実行して真偽値を返却するメソッドですが、バリデーションエラー時に例外を発生させたいことがあったので調べてみました。 通常ならsave!やcreate!で対応できますが、Activerecord-importのBulkインサートの永…

クエリ文字列から特定のパラメータを削除したい | Ruby On Rails

クエリ文字列から特定のパラメータのみを削除したいことがあったのでメモ。 実装 uri = URI.parse('https://www.example.com?hoge=1&fuga=2&piyo=3') query = Rack::Utils.parse_nested_query(uri.query) query.delete('fuga') uri.query = query.to_param u…

Railsのカスタムバリデーションで複数項目の相関をチェックしたい

開始日と終了日を入力するシステムで、期間の大小チェックと期間の日数チェックを行いたい場合があります。 カスタムメソッドで実装するケースはよく見受けられますが、カスタムバリデーションとして使い回したい思ったので実装してみました。 ※あくまでも簡…