deviseのdestroyアクションを実行すると何が起こるか調べてみた

こんにちは!kossyです! 今回は、deviseのdestroyアクションを実行すると何が起こるか調べてみたので、備忘録としてブログに残してみたいと思います。 環境 Ruby 3.0.3 Rails 6.0.4 devise 4.8.1 前準備 pry-railsとpry-byebugをGemfileに記載してbundleし…

devise-securityのparanoid_verificationのソースコードを追ってみた

こんにちは!kossyです! 今回はdevise-securityのparanoid_verificationのソースコードを追ってみたので、備忘録としてブログに残してみたいと思います。 環境 Ruby 3.0.3 Rails 6.0.4 devise-security 0.16.0 paranoid_verificationってなに? paranoid_ve…

Smart Health Cardの発行と検証を行えるGem 「health_cards」をRails開発環境で動かす

こんにちは!kossyです! 今回はSmart Health Cardの発行と検証を行えるGem 「health_cards」をRails開発環境で動かす手順について、ブログに残してみたいと思います。 環境 Ruby 2.7.4 Rails 6.1.3.1 MacOS Catalina 環境構築 以下のページからソースコード…

RubyのOpenStrictクラスの使い方をGemのコードで理解を試みる

こんにちは!kossyです! 今回は、RubyのOpenStrictクラスの使い方を saml-idp という Gem のコード内での使い方を見て、理解を深めてみたいと思います。 ドキュメントを見る 公式のOpenStrictクラスのドキュメントを見てみます。docs.ruby-lang.org 要素を…

sendgridでメールの一斉配信をする際に宛先ごとに異なる文字列を仕込む方法

こんにちは!kossyです! さて、今回はsendgridでメールの一斉配信をする際に宛先ごとに異なる文字列を仕込む方法について、ブログに残してみたいと思います。 環境 Ruby 2.6.9 Rails 6.0.4 X-SMTPAPIの Substitution Tags を使う 以下のドキュメントによる…

ruby-samlでX509証明書の有効期限を取得したい

こんにちは!kossyです! 今回は ruby-saml でX509証明書の有効期限を取得する方法について、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.9 Rails 6.0.4 ruby-saml 1.13.0 not_afterメソッド 結論から言うと、OpenSSL::X509::Certificate#n…

deviseのencrypted_passwordに値が保存される仕組みを調べてみた

こんにちは!kossyです! 今回はdeviseで認証機能を利用する際に必要になるカラムである、「encrypted_password」カラム に値が保存される仕組みを調べてみたので、備忘録としてブログに残してみたいと思います。 環境 Ruby 3.0.3 Rails 6.0.4 devise 4.8.1 …

RailsでPostgreSQLを使う際にgen_random_uuid関数を有効化したい

こんにちは!kossyです! 今回はRailsでPostgreSQLを使う際にgen_random_uuid関数を有効化する方法について、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.9 Rails 6.0.4 PostgreSQL 13系 マイグレーションファイルの作成 gen_random_uuid関…

devise-two-factorでの2要素認証設定時にdigestを変更したい

こんにちは!kossyです! 今回はdevise-two-factorでの2要素認証設定時にdigestを変更する方法について、ブログに残してみたいと思います。 環境 Ruby 2.6.9 Rails 6.0.4 MacOS BigSur devise-two-factor 4.0.1 otpメソッドのオーバーライド devise-two-fact…

Rubyで五捨五超入を計算する

こんにちは!kossyです! さて、今回はRubyで五捨五超入する方法について、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.9 五捨五超入とは 主に薬価の計算を行う時に用いる端数処理で、薬価の円を点数に直して計算するときに使われます。www…

graphql-rubyで認可制御を行うready?メソッドとauthorized?メソッド

こんにちは!kossyです! さて、今回はgraphql-rubyで認可制御を行うready?メソッドとauthorized?メソッドについて、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.9 Rails 6.0.4 MacOS BigSur graphql-ruby 1.13.0 graphql-rubyでの認可制御…

パスワードリセット機能を提供するdeviseのrecoverableモジュールのソースコードを追ってみた

こんにちは!kossyです! 今回はパスワードリセット機能を提供するdeviseのrecoverableモジュールのソースコードを追ってみたので、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.9 Rails 6.0.4 MacOS BigSur createアクション まずはcreate…

devise-securityのsession_limitableモジュールのソースコードを追ってみた

こんにちは!kossyです! さて、今回はdevise-securiyのsession_limitableのソースコードを追ってみたので、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.8 Rails 6.0.4 MacOS BigSur devise-security 0.16.1 前提 devise-securityのsession…

devise-securityのsession_limitableを使ってみる

こんにちは!kossyです! さて、今回は認証機能を提供するGem「devise」のextensionで、エンタープライズな認証機能を実現するdevise-securityのsession_limitableを使ってみたので、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.8 Rails 6.…

ruby-samlで「Invalid Signature on SAML Response」が返ってきた場合の調査方法

こんにちは!kossyです! 今回はSSOを実現するGem「ruby-saml」で「Invalid Signature on SAML Response」が返ってきた場合の調査方法について、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.8 Rails 6.0.4 MacOS BigSur ruby-saml 1.13.0 …

ruby-samlで「Invalid settings, idp_sso_service_url is not set!」が発生した場合の対処法

こんにちは!kossyです! 今回はSSOを実現するGem「ruby-saml」で「Invalid settings, idp_sso_service_url is not set!」が発生した場合の対処法について、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.8 Rails 6.0.4 MacOS BigSur ruby-sa…

devise_saml_authenticatableのSamlAuthenticatable::SamlResponseのソースコードを追ってみる

こんにちは!kossyです! 今回は、前回のブログで追いきれなかった、SamlAuthenticatable::SamlResponseのソースコードを追ってみようと思います。前回のブログkossy-web-engineer.hatenablog.com 環境 Ruby 2.6.8 Rails 6.0.4 MacOS BigSur devise_saml_aut…

DeviseベースでSAML SSOを実現する 「devise_saml_authenticatable」のソースコードを追ってみた

こんにちは!kossyです! 今回は、DeviseベースでSAML SSOを実現する 「devise_saml_authenticatable」のソースコードを追ってみたので、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.8 Rails 6.0.4 MacOS BigSur devise 4.8.0 devise_saml_…

Rack::MockRequestとRack::Requestを使ってRack::Requestのbodyのrack.inputをいじっていて気づいたこと

こんにちは!kossyです! 今回はRack::MockRequestのenv_forメソッドとRack::Requestクラスを使って、Rack::Requestのbodyのrack.inputをいじっていて気づいたことがあったので、 備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.8 Rails 6.0.4…

graphql-rubyでCustom Scalarsを定義してみる

こんにちは!kossyです! 今回はgraphql-rubyでCustom Scalarsを定義する方法について、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.8 Rails 6.0.4 MacOS BigSur graphql-ruby 1.12.19 CustomScalarsとは graphqlにはデフォルトで組み込ま…

seedデータ作成スクリプトを複数ファイルに分割する

こんにちは!kossyです! 今回はRailsにおいてseedデータ作成スクリプトを複数ファイルに分割する方法について、ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3.7 MacOS catalina 方法 seeds.rbに以下のスクリプトを追加します。 # db/seeds…

SQLのGREATEST関数とLEAST関数を使ってみる

こんにちは!kossyです! 今回はSQLのGREATOR関数とLEAST関数を使って、MAXやMINとの挙動の違いを調査してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3.7 MacOS catalina GREATESTとLEAST関数 www.postgresql.jp GREATESTとLEAST関数は任意の数の式のリ…

factory_botでvalidationをskipしたいときの方法

こんにちは!kossyです! 今回はテストデータを生成するGemであるfactory_botを使う際に、validationをskipする方法について、 ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3 macOS Catalina to_createメソッドを使う 答えを先に言ってしま…

RailsでSQLのログを改行無しで出力する「squish」メソッド

こんにちは!kossyです! 今回は、RailsでSQLのログを改行無しで出力する「squish」メソッドについて、ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3 Docker for Mac 使い方 Employeeモデルにlength_of_serviceというscopeが生えているとし…

Nginx起動時に Job for nginx.service failed because the control process exited with error codeが出る場合の対処法

こんにちは!kossyです! 今回はNginxの起動時に Job for nginx.service failed because the control process exited with error codeが出る場合の対処法についてブログに残してみたいと思います。 sudo nginx -t の実行 sudo nginx -tを実行すると、不具合…

Shrine::Error: must call Shrine::Attacher#url with the name of the version の解消

こんにちは!kossyです! 今回はファイルアップロードを可能にするGem「Shrine」で発生するエラーの解消について、 ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3 MacOS catalina shrine 3.3.0 small, medium, largeのいずれかを指定する必…

URIを簡単に扱えるGem「addressable」Gemの使い方

こんにちは!kossyです! 今回はURIを簡単に扱えるGem「addressable」Gemの使い方について、ブログに残してみたいと思います。 環境 Ruby 2.6.6 addressable 2.7.0 基本的な使い方 docs.ruby-lang.org $ url = "https://www.yahoo.co.jp/" => "https://www.y…

APIのドキュメントを生成するGem「autodoc」の使い方

こんにちは!kossyです! 今回はAPIのドキュメントを自動で生成するGemである「autodoc」の使い方について、 ブログに残してみたいと思います。 github.com 環境 Ruby 2.6.6 Rails 6.0.3 MacOS Catalina autodoc 0.7.5 導入 導入は至って簡単です。 # Gemfil…

Railsでbulk_insertを行う際に uuid_generate_v4() が走らない問題の対処法

こんにちは!kossyです! 今回はRailsでPostgreSQLを使っていて、bulk_insertを行う際に uuid_generate_v4() が走らない問題の対処法について、 ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3 PostgreSQL 12系 Securerandomモジュールのuui…

ページネーションを行うGem「Pagy」を使ってみる

こんにちは!kossyです! 今回はkaminariやwill_paginateよりもパフォーマンスがいいとされているGem「Pagy」を使ってみたので、 ブログに残してみたいと思います。 GitHub - ddnexus/pagy: The ultimate pagination ruby gem 導入 導入は至って簡単です。 #…