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の HTTP Response の default headers について調べてみた

こんにちは!kossyです! 今回はRailsの HTTP Response の default headers について調べてみたので、 ブログにまとめてみたいと思います。 環境 Rails 6.1.3 default headers について railsguides.jpRailsのレスポンスヘッダーにはデフォルトでいくつかの…

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の設定 スプレッドシートを操作…

devise-securityのpassword_expirableのコードを読む

こんにちは!kossyです! さて、今回はdevise-securityのpassword_expirableのソースコードを読んでみたので、 ブログに残してみたいと思います。 環境 devise-security 0.15.0 コメントアウト部分の翻訳 まずはコメントアウト部分を読んでみます。 Password…

devise-securityのpassword_expirableを使ってみる

こんにちは!kossyです! さて、今回はdeviseのextensionであるdevise-securityを使ってみましたので、使い方をブログに残してみたいと思います。 なお、devise_token_authを用いてToken認証をしていることを前提とします。 環境 Ruby 2.6.6 Rails 6.0.3.6 d…

Vue.js & TypeScript でNavigationGuardを実装する

こんにちは!kossyです! さて、今回はVue.js & TypeScriptでのRouterGuardの実装手順をブログに残してみたいと思います。なお、今回はRails APIモードでdevise_token_authを使ってtoken認証を行っていて、VueRouterの導入は済んでいることを前提として書か…

Rails6 API + Vue.js3 + TypeScript で画像アップロード機能を実装してみた

こんにちは!kossyです! さて、今回はRails6 API + Vue.js3 + TypeScript で画像アップロード機能の実装手順をブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3.4 Docker for Mac Vue 3.0.5 Vue CLI 4.5.9 TypeScript 3.9.7 なお、既にRailsA…

RailsのActiveSupportのin_time_zoneメソッドの処理の中身を覗いてみた

こんにちは!kossyです! さて、今回はRailsのActiveSupportのメソッドであるin_time_zoneメソッドの処理の中身を見てみたので、 ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3.4 Docker for Mac メソッドの定義位置を確認 まずはsource_lo…

開発環境にdockerを使っている場合のrails-erdのセッティング

こんにちは!kossyです! さて、今回は開発環境にdockerを使っている場合のrails-erdのセッティング方法について、 ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3.5 rails-erd 1.6.1 ruby-graphviz docker desktop 2.3.6 docker-compose 1.…

Rails6のHostのホワイトリスト機能の使い方

こんにちは!kossyです! さて、今回はRails6のHostのホワイトリスト機能の使い方について、ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 6.0.3.5 Docker for Mac Hostのホワイトリスト機能とは? Hostのホワイトリスト機能が入ったPRgithub.com…

アップロードされたファイルのMime-TypeをチェックできるGem 「marcel」の使い方

こんにちは!kossyです! さて、今回はアップロードされたファイルの中身をチェックできるGem 「marcel」の使い方について、 ブログに残してみたいと思います。 GitHub - basecamp/marcel: Find the mime type of files, examining file, filename and decla…

railsでメソッドの定義場所をコンソールから確認してみた

こんにちは!kossyです! さて、今回はRailsでメソッドの定義場所を調べる方法について、ブログに残してみたいと思います。 環境 Ruby 2.6.6 Rails 5.2.4 Docker for mac ActionView::Base#renderの定義場所を調べる 諸事情あってActionView::Base#renderの…

RailsでCOALESCEを使って勤続年数を出してみた

こんにちは!kossyです! さて、今回はRailsでCOALESCEを使って勤続年数を出してみたので、ブログに残してみたいと思います。 環境 Rails 6.0.3.4 Ruby 2.6.6 PostgreSQL 12 Docker For Mac 前提 以前書いた拙著のテーブル構成を例にとります。kossy-web-eng…

RailsでSQL直書きでCASE文を書いてみる

こんにちは!kossyです! さて、今回はRailsでSQL直書きでCASE文を書いてみたので、ブログに残してみたいと思います。 環境 Rails 6.0.3.4 Ruby 2.6.6 PostgeSQL 12 Docker For Mac 前提 以前書いた拙著のテーブル構成を例にとります。kossy-web-engineer.ha…

graphql-batchでloadするデータにthenメソッドで処理を加える

こんにちは!kossyです! さて、今回はgraphql-batchのthenメソッドを使って、loadしたobjectに処理を加える方法について、 ブログに残してみたいと思います。 環境 Ruby 2.6.3 Rails 6.0.3.4 graphql 1.11.6 graphql-batch 0.4.3 方法 post has_many commen…