Madogiwa Blog

主に技術系の学習メモに使っていきます。

Ruby on Rails

Ruby on Rails: Rollbarに連携する時に属性値等々をマスキングするMEMO

エラー通知サービスにRollbarを使っているのですが、ActiveRecord::RecordInvalid等の例外が発生したりするとActiveRecordのインスタンスの属性等が表示されてしまいものによっては連携したくない情報がRollbarに連携されてしまう可能性があります。 Rollar…

Ruby on Rails: Active Record Encryptionを使って属性値を暗号化するメモ

Ruby on Rails 7から導入されたActive Record Encryptionを使ってみたところ大分良さそうだったので使い方とかをメモしてきます Active Record Encryptionとは? Active Record Encryptionを使ってみる Active Record Encryptionの初期設定 Active Record En…

Ruby on Rails: Request specでresponse bodyのBOM付きCSVを検証する。

BOM付きのCSVダウンロード系の機能の検証をRequest specでresponse bodyのBOM付きCSVを検証する時に若干ハマったのでやり方をメモ BOM付きのCSVを検証する時の注意点 当たり前といえば当たり前ですが、encoding: 'bom|utf-8'を指定しないとパース時にエラー(…

Ruby on Rails: 個人のサービスをRails7にアップグレードしたのでやったこととかメモ📝

2021/12/15 Rails 7がリリースされました rubyonrails.org さっそく個人のサービスをRails 6.1.4.4 -> Rails 7にアップグレードしたのでやったこととかメモ Rails 7の主要な対応 Rails 7へのアップグレード手順 Rails以外のgemのバージョンアップ Railsのバ…

Ruby on Rails: 開発環境込みでcircleci/rubyからcimg/rubyに乗り換えるメモ

今までCircleCI及び開発環境でcircleci/rubyのnode-browserのイメージを利用していた*1のですが、下記ということでcimg/rubyに乗り換えることにしました。 プレフィックスが「 circleci / 」のレガシーイメージは、 2021 年 12 月 31 日に廃止されます。 ビ…

Ruby on Rails: Controllerのaction内に分岐を持たずにredirectと処理の続行を切り替える実装をしたいときのメモ

Controller内でaction内に分岐を持たずに特定条件でredirectと処理の続行を切り替えるみたいなことをやりたいときに、単純にredirect処理をprivate methodに移すみたいなやり方だと結局アクションに戻ってしまい上手いこと行かないので、ちょっと悩んだので…

Ruby on Rails: Capybaraを使ったシステムテストでHTTPリクエストを送信する方法

Capybaraを使ったシステムテストで何かしらHTTPリクエストを送信したいときに色々ハマったのでメモしておきます システムテストについてはこちら railsguides.jp リクエストを送る方法 以下を行うとシステムテスト内でリクエストを送信することができます。 …

今更ながらActiveStorageの仕組みとか使い方とかメモ📝

今更ながらActiveStrageの仕組みとか使い方とかを動かしながらちょっと勉強したのでメモ ActiveStorageとは Active Storageは、Amazon S3、Google Cloud Storage、Microsoft Azure Storageなどのクラウドストレージサービスへのファイルのアップロードや、フ…

Ruby on Rails: js-routesを使ってフロントエンドでもRoute系のHelperを使用するMEMO

フロントエンド側から非同期でRails側にリクエストを投げたいときとかに今までは以下のような定数を集めたmoduleをフロントエンド側に用意してたりしていたのですが、 export const BLOG_API_ENDPOINT = "/api/blogs"; export const LIKE_API_ENDPOINT = "/a…

Ruby on Rails: passwordlessを使ってMagicLink的な認証機能を作る

Ruby on RailsでMagic Link的な認証を作ってみたく調べてたところpasswordlessというgemを見つけて色々触ってみたので使い方とかをメモしておきます github.com Magic Linkとは? サイトに用意された「マジックリンク」と名付けられたボタンを押します。する…

Ruby on Rails: webpack管理のフロントエンドまわりのファイルも含めてViewを作成するジェネレーターを作った

個人のサービスでwebpackでフロントエンド関連のファイルを管理していてsimpackerを使ってRailsで読み込むみたいなことを行なっているのですが。。。 新規のページをつくるときとかに手でエントリーのJSを用意してページ用のCSSファイルを作ってインポートし…

Ruby on Rails: `constraints`を使ってログイン必須等のRoutesに制約を掛けるMEMO

SidekiqのDashboard等をmountしたengineの画面をログイン必須にしたい時、特定のサブドメインのときだけアクセス可能にしたい等、Rails のルーティングのconstraintsを使うと実現できそうだったので、そのあたりをメモしておきます api.rubyonrails.org Rail…

Ruby on Rails: `rails secret`でセキュアな文字列を生成するMEMO

今までsecret_key_base等を設定するときにわざわざ以下のような感じでconsoleを起動してセキュアな文字列を取得していたのですが、 $ bin/rails console irb(main):010:0> SecureRandom.hex(64) => "ad56c1c986e397149281da99f6e268d4e3657d65a46600dcaeccd8…

Ruby on Rails: コンソール使用時に特定のモデルを読み取り専用にするMEMO

APIから取得した結果を保存するModelやユーザー情報を扱うModel、中間結果を保存するテーブル等、直接更新してしまうと危険なのでコンソールから起動するときにはReadonlyにしたいなぁと思い色々やり方を考えてみたのでメモしておきます ※rails console -sも…

Ruby on Rails: 複数DB利用時のDeviseのActiveRecord::ReadOnlyErrorに対応するメモ

認証にDeviseを利用しているとロック解除等のメールに送信されたLinkをクリックといったGETリクエストでDBを更新するような処理実行時にRailsの複数DBを使っているとActiveRecord::ReadOnlyErrorが発生してしまうため、そのあたりの対応方法をメモ railsguid…

Rails 7から導入される予定のimportmap-railsを使ったフロントエンド環境を試してみる

Rails 7からimportmap-railsを使ったフロントエンド環境が提供される予定です。 Rails new時にimportmap-railsを使用するoptionも追加され試しやすかったので、軽く使ってみました。 利用方法とかメモしておきます github.com github.com import mapsとは 簡…

.railsrcとRailsテンプレートを使ってRails new関連の作業をコードで管理する

最近、割とRails newする機会があり.railsrcとRailsテンプレートを使うといい感じにこのあたりの作業をコード管理して再現性と効率的に行えそうだったのでメモしておきます .railsrcとは Railsテンプレートとは railsrcとRailsテンプレートを使ってみる おわ…

Ruby on Rails: 今後標準で使えるようになるかもしれないViewComponentを試してみる

ViewComponentとは? ViewComponentの使い方 ViewComponentをテストする おまけ:VueのSFCみたいなのは実現できるか? おわりに ViewComponentとは? 3rd Party製のコンポーネントフレームワークのためにレンダー済みのHTMLを返すrender_inが定義されているO…

OK Computerのヘルスチェックをブラウザで見やすくするGemを作りました💎

OK Computerのヘルスチェックをブラウザで見やすくするGemを作ったので、使い方とかをメモしておきます 作ったGem github.com モチベーション github.com OK Computerはヘルスチェックをしてくれる便利なGemなのですが、Viewがテキスト or JSONのみの用意と…

個人のWebサービスにGA(Google Analytics)を導入して色々トラッキング出来るようにしたMEMO📝

個人のWebサービスでGAでトラッキング出来るようにしてみたので、やったこととか手順とか色々、MEMOしておきます GA(Google Analytics)とは? marketingplatform.google.com ユーザー像を把握。 ユーザー像を詳しく分析して理解を深めましょう。Google アナリ…

Skylightを使ってRailsアプリケーションのAPMを取得するMEMO📝

個人で運営しているRails製 WebサービスのAPMをSkylightというサービスを利用して取得してみたので、手順とかをMEMOしておきます www.skylight.io Skylightとは? Skylight is a smart profiler for Ruby and Rails applications. It turns performance data…

Ruby on Rails: Logrageを使ってRailsのログ出力をいい感じにするMEMO📝

個人のWebサービスにLogrageを入れてみたので導入方法とか使い方をメモしておきます github.com Logrageとは? Logrageの使い方 Logrageを導入する ログ出力項目を追加する 独自に作成したフォーマッターを使用する おわりに Logrageとは? Lograge is an at…

Ruby on Rails: Rails標準の`config_for`を使ってカスタム設定を管理する⚙

Railsでカスタム設定を扱う場合、以下に記載したSettingslogicやGlobalを使うことが多かったんですが、Rails標準のconfig_forを使っても同じようなことが出来たので、使い方とかをMEMOしておきます github.com github.com ちなみに、Rails 6.1.3.2環境で試し…

Ruby on Rails: OK Computerを使ってヘルスチェックを行うときの導入方法とかMEMO

OK ComputerというGemを教えてもらい、個人サービスに入れてみたところ、適当に設定すると色々見れて便利だったので導入方法とかをメモしておきます github.com 導入方法 OK Computerのインストール OK Computerのmount 監視項目の追加 Basic認証の追加 おま…

Ruby on Rails: Rails 6.1でroutes.rbを複数ファイルに分割する

以下のPRで導入されたRails 6.1から使える機能を使うといい感じでroutesを複数ファイルに分割できたのでやり方をメモしておきます github.com やり方 以下のようなroutesをnamespace毎に分割したいときには、 Rails.application.routes.draw do root to: 'bo…

Ruby: FactoryBot.lintでFactoryの壊れないようにチェックする

FactoryBotを利用してテストデータを管理していて、開発が進んでいくとデフォルトで作成したときにエラーになるようなFactoryが作られてしまったりします。 github.com そんなときにFactoryBot.lintを使うとFactoryが壊れたときに気づけて便利だったのでメモ…

Ruby on Rails: Rails 6で追加された`insert_all`の実行時にデフォルトでTimestampを付与するMEMO

Rails 6でbulk insertの機能が実現されました ※概要は以前紹介してるので興味のある方は参照してください。 madogiwa0124.hatenablog.com 非常に便利なのですが、記事でも記載した以下の通り、timestampが補完されずにcreate_at、updated_atにNOT NULL制約を…

Heroku:Free DynoでRailsアプリケーションとSidekiqを動かすMEMO📝

HerokuでRailsアプリケーションを運用しているのですが、Sidekiqを導入するときにredisを構築したり、sidekiqのプロセスを立ち上げたり、色々と調べることがあったので、そのあたりの内容をメモしておきます pumaからhookしてsidekiqのプロセスをwebのdynoの…

Ruby: FactoryBotでglobalに使えるtraitを定義するMEMO

以下の記事を追記するときにFactoryBotでfactory跨いで使いたいtraitを定義する方法調べていて見つけたのでMEMOしておきます madogiwa0124.hatenablog.com 検証したバージョンはfactory_bot 6.1.0です。 やりたいこと globalに使えるtraitを定義する おわり…

Ruby on Rails: BulletからRails標準のstrict loadingに乗り換えるMEMO📝

今までN+1の検知にBulletを使っていたのですが github.com Rails 6.1から導入された新機能strict loadingでも同じようなことが実現できそうだったので、個人のWebサービスをBulletからstrict loadingに載せ替える手順をメモしておきます strict_loadingをグ…