招待機能を実現するGem「devise_invitable」のソースコードを追ってみる

こんにちは!kossyです! 今回はRailsで認証機能を実装する際の定番Gemである「devise」のextensionで、招待機能を実現するGem「devise_invitable」のソースコードを追ってみたので、ブログに残してみたいと思います。 github.com 環境 Ruby 2.6.6 Rails 6.0…

ファイルアップロードを行うGem 「Shrine」の紹介

こんにちは!kossyです! さて、今回はファイルアップロードを行うGem 「Shrine」の使い方をブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.4 shrine 3.4.0 実装 公式のGettingStartedに倣って実装していきます。Getting Started · Shrine ま…

TailwindCSS でタグ表示っぽい要素をつくる

こんにちは!kossyです! 今回はTailwindCSS でタグ表示っぽい要素をつくったので、ブログに残してみたいと思います! 環境 Vue.js 3系 tailwindcss/postcss7-compat@^2.0.3 完成品としてはこんなものを目指します。 実装 まずはコード全晒しです。 <aside class="w-full text-xl text-gray-800 leading-normal"> <div class="pb-8 mt-8"> <p class="tracking-wide leading-7 text-gray-500">注目の</p></div></aside>…

Vue.js 3 + TypeScriptでvue-qrcodeを導入する

こんにちは!kossyです! さて、今回はVue.js 3 + TypeScriptでvue-qrcodeを導入する方法について、ブログに残してみたいと思います。 環境 vue/cli 4.5.9 vue 3.1.2 typescript 3.9.7 vue-qrcode 2.0.0-rc 導入 以下のコマンドを実行します。 $ npm install…

権限管理Gem「Pundit」の権限判定処理を直接呼び出したい

こんにちは!kossyです! 今回は権限管理Gem「Pundit」の権限判定処理を直接呼び出したい時の書き方について、ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3 MacOS Catalina 実装 通常、PunditはController内でauthorizeメソッドと共に呼び…

RailsでtransactionのRollbackがうまく発火しなかった話

こんにちは!kossyです! 今回はRailsでtransactionのRollbackがうまく発火しない事象に遭遇したので、備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3 MacOS catalina なお、テーブル構成は以下の記事で紹介したものを流用しま…

レコードの合計値をキャッシュできるGem「counter_culture」を試してみる

こんにちは!kossyです! 今回は、テーブルのレコードの合計値をキャッシュできるGemであるcounter_cultureを試してみたので、 備忘録としてブログに残してみたいと思います。github.com 環境 Ruby 2.6.6 Rails 6.0.3 MacOS catalina counter_cultureのユー…

認証機能を提供するGem「devise」のtimeoutableのソースコードを追ってみた

Gem

こんにちは!kossyです! 今回は認証機能を提供するGem「devise」のtimeoutableのソースコードを追ってみたので、 備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3 devise 4.8.0 github.com なお、説明の前提として、deviseを利…

Railsでviews内でcontrollerのアクション名を取得したい

こんにちは!kossyです! 今回は、Railsでviews内でcontrollerのアクション名を取得する方法について、ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3 MacOS Catalina action_nameメソッドを使う views内でアクション名を取得したい場合は、…

TypeScriptでFormDataオブジェクトを使って画像をuploadする際に「Object is possibly 'null'.」を回避する方法

こんにちは!kossyです! さて、今回はTypeScriptでFormDataオブジェクトを使って画像をuploadする際に「Object is possibly 'null'.」を回避する方法について、 備忘録としてブログに残してみたいと思います。 環境 TypeScript 4系 Chrome 最新版 シチュエ…

認証機能を提供するGem「devise」のrememberableのソースコードを追ってみた

Gem

こんにちは!kossyです! 今回は認証機能を提供するGem「devise」のrememberableのソースコードを追ってみたので、 備忘録としてブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3 devise 4.8.0 github.com なお、説明の前提として、deviseを利…

devise_token_authの「devise_token_auth_group」のコードリーディング

Gem

こんにちは!kossyです! 今回はRailsでToken認証機能を提供するGem「devise_token_auth」を導入すると使えるようになる、 「devise_token_auth_group」メソッドのコードを読みながら、ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3.6 devi…

PostgreSQLにおけるLIKEとILIKEの違いを検証してみた

こんにちは!kossyです! 今回はPostgreSQLにおけるLIKEとILIKEの違いをRails上で検証してみましたので、ブログに残してみたいと思います。 環境 PostgreSQL 12.5系 Rails 6.0.3 検証 まずはドキュメントを読んでみます。www.postgresql.jp 9.7.1. LIKELIKE…

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 導入 導入は至って簡単です。 #…

ページネーションを行うGem「kaminari」のソースコードを読んでみた

こんにちは!kossyです! さて、今回はページネーション機能を実現するRubyのGemである「kaminari」のソースコードを読んでみたので、 ブログに残してみたいと思います。github.com 環境 Ruby 2.6.6 Rails 6.0.3 MacOS catalina kaminariとは 偉大なる本家リ…

dependabotのconfig.ymlの内容を精査する

こんにちは!kossyです! さて、今回はdependabotのconfig.ymlの内容を精査するサイトを見つけたので、ブログに残してみたいと思います。 間違いを指摘してくれる dependabot.com上記のサイトでconfig.ymlの内容を精査してくれます。 version: 1 update_conf…

RailsでMySQLを使う時にuuidにデフォルト値を入れたい

こんにちは!kossyです! さて、今回はRailsでMySQLを使う時にuuidにデフォルト値を入れる方法についてブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3 MySQL 5.7系 moduleの作成 PostgreSQLの場合だとuuid型のカラムが存在しているのですが…

PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list の解消

こんにちは!kossyです! さて、今回はPostgreSQLで遭遇する、PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list の解消方法について、 ブログに残してみたいと思います。 環境 PostgreSQL 12系 実…

RailsでunionとCASE文を使って複雑なORDER BY を実現する

こんにちは!kossyです! さて、今回はRailsでunionを使って複数テーブルに跨がるORDER BY を実現する方法について、ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3.6 POstgreSQL 12系 MacOS Catalina 実装 抽象化した例文が以下かなと。 sc…

RubyでCSVを操作するときに空行を読み飛ばすことができるskip_blankオプションについて

こんにちは!kossyです! さて、今回はRubyでCSVを操作するときに指定できるskip_blankオプションについて、ブログに残してみたいと思います。 環境 Ruby 2.6.7 Rails 6.0.3.6 MacOS Catalina 使い方 まずはドキュメントを確認します。 docs.ruby-lang.org …

google-api-clientを使ってRailsのDBのデータをスプレッドシートに出力してみた

こんにちは!kossyです! さて、今回は、スプレッドシートを操作できるGem「google-api-client」を使って、 RailsのDBのデータをスプレッドシートに出力する方法について ブログに残してみたいと思います。 google-api-clientの設定 スプレッドシートを操作…