Madogiwa Blog

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

2021-01-01から1年間の記事一覧

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認証の追加 おま…

Vue✕TypeScriptなプロジェクトにJestを導入する方法MEMO👢

Vue、TypeScriptが導入時されているプロジェクトにJestを導入したので、そのあたりの手順をMEMOしておきます 関連ライブラリのinstall Jestの設定ファイル作成 Jest実行用のコマンドをpackage.jsonに追加 CIでJestを実行する 導入時に発生したエラー解消ログ…

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が壊れたときに気づけて便利だったのでメモ…

JavaScript: Rollbarのエラー通知をSnippetではなくRollbar.jsを使って行う

JavaScriptのエラー検知にRollbarを使用しているのですが、最近npmで公開されているRollbar.jsを利用するとSnipetを使わなくて済むことがわかったので利用方法をメモしておきます 公式ドキュメント記載のSnipetを利用する方法 Rollbar.jsを使ったSnipetを使…

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: RubyCriticでコードを静的解析して品質を計測するMEMO📝

個人で運用しているRuby on Rails製のWebサービスでRubyCriticを使ってCIで品質レポートを取得するようにしたので、そのあたりのやり方等をメモしておきます rubycriticとは? RubyCritic is a gem that wraps around static analysis gems such as Reek, Fl…

Ruby: Deviseで現在有効になっているOmniAuthのproviderのリストを取得する

Deviseで現在の環境で有効になっているproviderを確認して有効なものだけのログインボタンを出す(例:開発環境でだけdeveloperストラテジを有効化しているので開発環境でだけ導線を出したい) 等の場合に現在有効なproviderを取得したいときのやり方をMEMOし…

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をグ…

Ruby on Rails: ダイレクトルーティング(Direct routes)を使って外部サイトのURLをroutesで管理する

OAuthを利用した外部サイトへの認証時のリダイレクトやLPへの導線等、Webサービス内で外部サイトのURLを扱いたいときにRailsのダイレクトルーティング機能を使うとURLの管理をRoutesに統一できて便利だったのでMEMOしておきます ダイレクトルーティング機能…

webpack4系から5系にアップデートした際の対応事項とかメモ

個人で開発しているサービスでフロントエンドのbuildにwebpackを利用しているのですが、4系から5系にアップデートしたので、そのあたりで対応したことをメモしておきます 利用していたwebpackのビルド構成 webpackアップデート時の対応事項メモ modeを明示的…

個人のWebサービスをRuby 3.0アップデートしたので対応したこととかMEMO

2020/12/25にRuby 3.0.0がリリースされました✨ www.ruby-lang.org Ruby on Rails(6.1.1)製の個人のWebサービスを今更ながらRuby 3.0にアップデートしました。 update後に一部CI等が落ちて対応した点があったので対応したことをMEMOしておきます 対応したこと…

JavaScript: class内でsetIntervalしたときにthisをclassのinstanceにするMEMO

setIntervalやsetTimeout系の処理をclass内で呼び出したときに、thisの値がおかしくなり、対応法でハマったのでメモしておきます 結論 setInterval等のロジックで呼び出す関数にbind(this)をつけて、thisを明示する bind() メソッドは、呼び出された際に thi…

Deviseで内部でセキュアなパスワードを設定してアカウントを作成するMEMO

管理画面のアカウント等、管理者が生成して利用者にアカウントを配布するような運用はあると思うのですが、管理者がアカウントを作成する際にパスワードまで指定するようにしてしまうと、管理者によるなりすましの懸念があります。。。 そのためアカウント作…

Ruby on Rails: 6.1.0の新機能strict_loadingを使ってN+1を防ぐMEMO

Rails 6.1.0で導入されたstrict_loadingを使うと手軽にN+1のチェックが出来て便利そうなのでMEMO 基本的には以下のような形でActiveRecord::Releationを作るメソッドチェイン内でstrict_loadingを呼び出すようにすると、 def index @feeds = Feed.strict_loa…

クックパッドマートさんのエンジニア採用試験が公開されているみたいなのでやってみた🥞

以下のTweetを見かけて気になり、勉強がてら自分でも解いてみたので自分の回答がいい感じかはわからないですがメモしておきます クックパッドの長い歴史の中で、今回初めてクックパッドマートでは、エンジニアの採用試験問題を公開することになりました!こ…

OmniAuthのDeveloper Strategyを使って開発環境でOmniAuthを使った認証を試すMEMO

Twitter等の外部アカウントの認証を開発環境で試すのは秘匿情報を本番と開発環境で分けたり等、色々考慮することが多くて面倒だと思うのですが、OmniAuthのDeveloper Strategyを使うと簡単にOmniAuthを使った認証処理を試せそうなので使い方とかをMEMOしてお…