【Rails】present?とpresenceの違いと使いどころ
present?について present?は真偽値を返すRailsのメソッドです。 nil, false, “”(空文字), ” “(空白), [](空配列), {}(空ハッシュ)の場合にfalse、それ以外の場合にtr…
Rubypresent?について present?は真偽値を返すRailsのメソッドです。 nil, false, “”(空文字), ” “(空白), [](空配列), {}(空ハッシュ)の場合にfalse、それ以外の場合にtr…
RubyN+1カウントクエリとは、取得したN件のデータそれぞれに対してcountクエリが発行される現象のことを指します。 以下はN+1カウントクエリの例です。取得したN件のauthorに対してcountクエリが実行されていること…
RubyN+1カウントクエリとは、取得したN件のデータそれぞれに対してcountクエリが発行される現象のことを指します。 以下はN+1カウントクエリの例です。取得したN件のauthorに対してcountクエリが実行されていること…
Ruby前回、counter_cacheでN+1カウントクエリを解消する手順でRailsの標準機能であるcounter_cacheを利用してN+1カウントクエリを解消する方法について紹介しました。 今回はcounter_cach…
RubyN+1カウントクエリが発生している状態とは N+1カウントクエリとは、取得したN件のデータそれぞれに対してcountクエリが発行される現象のことを指します。 以下はN+1カウントクエリの例です。取得したN件のauthor…
Rubybelongs_toで紐づいているActive Recordの関連付けキーで検索をしたい場合は、当該カラムの値の代わりActive Recordモデルを検索条件に利用できます。1 たとえば以下のような1対多で紐づいたAu…
Ruby分割してデータを読み込むことでメモリの消費を抑える eachはデータをすべてメモリにのせてからループ処理を実行するため、可能性があります。 たとえば以下の例では、booksテーブルの全レコードがActive Record…
RubyCSVを分割して読み込むことでメモリの消費を抑える 【Rails】in_batches、find_in_batches、find_eachの違いと使いどころで紹介したように、eachはデータをすべてメモリにのせてからルー…
Ruby検証環境のrubyのバージョンは2.7.1です。 通常の引数 通常の引数は以下の通りです。 メソッドで引数名を定義し、メソッド呼び出し時に値を設定します。 def message(greet, name) “#{gree…
Rubyeachはデータをすべてメモリにのせてからループ処理を実行するため、可能性があります。 たとえば以下の例では、booksテーブルの全レコードがActive Recordオブジェクトに変換され、全オブジェクトをまとめた配列…
Rubypluckやmapを利用することで、Active Recordモデルから特定の要素を取り出せます。 今回はpluckとmapの使い分けについて紹介します。 pluckについて pluckはRailsのメソッドです。引数で…
RubyRubyの実装で利用されるメモリを計測する方法には主に以下の2つがあります。 今回は上記2つの具体的な利用方法について紹介します。 なおObjectSpaceモジュールには『任意のオブジェクトのメモリを使用量を計測するm…
Rubyアプリケーションの性能や検証をする際に、1対多の関係を持つダミーデータを大量に用意したい時があります。 Rails 6から利用できるinsert_allメソッドを利用すると大量のデータを短時間でインサートできます。 また…
RubyRailsアプリケーションでバルクインサート(複数のレコードを一括でインサートする方法)を実現する場合、Rails 6以前はactiverecord-importを利用する必要がありました。 Rails 6からはバルクイ…
RubyFakerを利用すると簡単にダミーデータが作成できます。 今回はFakerの利用してRailsアプリケーションにダミーデータを作成する方法について紹介します。 Fakerの利用方法 gemをインストールします。 Gemf…
Ruby前回、Ruby標準のBenchmarkモジュールを利用したベンチマークの実行・確認方法でRuby標準のBenchmarkモジュールを利用したベンチマークテストの実行方法について紹介しました。 今回は、Benchmarkモ…
RubyRubyの標準で用意されているBenchmarkモジュールを利用するとベンチマークテストが実行できます。 今回はBenchmarkモジュールを利用したベンチマークテストの実行および結果の確認方法について紹介します。 Be…
RubyStackprofは『どのメソッドにどれくらいの時間がかかっているか』を解析できるgemです。 今回はStackprofの利用方法について紹介します。 なお、Stackprofはflamegraphと組み合わせることで解…
RubyRailsアプリの計測用gemで有名なrack-mini-profilerのインストール方法および利用方法について紹介します。 rack-mini-profilerで計測できること rack-mini-profilerは…
Rubyrblineprofは計測対象のファイルに計測用のコードを埋め込むことで行単位のプロファイリングが行えるgemです。 rblineprofの利用方法については【Ruby】rblineprofで行単位の計測を行う方法で紹介…
Ruby前回、【Ruby】rblineprofで行単位の計測を行う方法でrblineprofを利用したRubyのプロファイリング方法について紹介しました。 rblineprofを利用すると、計測対象のファイルに計測用のコードを埋…
Rubyrblineprofは行単位のプロファイリングを行うgemです。 rblineprofを利用することで『どの行でどれだけの時間がかかっているか』などが計測できます。 rblineprofの利用手順は以下の通りです。 今回…
RubyN+1問題とは、取得したN件のデータそれぞれに対してSQLが発行される現象のことをいいます。 N+1問題によるデータベースへの大量アクセスは、アプリケーションのパフォーマンスを低下させる原因の1つです。 今回はN+1問題…
RubyRailsのセッション情報はデフォルトでCookieに保存されます。 Railsのセッション管理方法は変更が可能で、Cookieの代わりにインメモリDBを採用するケースがよくあります。 今回はセッションの管理方法をCoo…
Ruby前回、『deviseのインストール手順をシンプルなログイン機能の実装で理解する』でdeviseを利用した認証機能の実装方法について紹介しました。 deviseでは、サインイン・サインアウト後のリダイレクトURL(遷移先の…
Rubydeviseを利用することで簡単に認証機能をRailsアプリケーションに構築できます。 今回はdeviseをインストールする手順について紹介します。 今回実装する内容について deviseを利用するとさまざまなことができ…
RubyRubyMineとDockerを連携し、コンテナの起動やDocker環境のデータベースをRubyMineから実行する方法について紹介します。 今回は以下のようなRailsとMySQLを組み合わせたDocker Compo…
RubyREST APIのテストコードにレスポンスボディの検証を追加することで、レスポンスボディに修正が加わったことを機械的にチェックできます。 今回はRSpecでREST APIのレスポンスボディを検証する方法について紹介しま…
Ruby外部APIを利用したメソッドのテストコードを書く際、APIとの連携方法がテストのスコープ外になることがあります。 たとえば『API経由で受け取ったデータを正しく加工できているか』をテストする場合です。 この時のテストの関…
Ruby【Ruby】faradayを利用した外部API連携クラスの作成手順の記事で、Faradayを利用した外部APIとの連携方法について紹介しました。 外部APIを利用したロジックのテストコードでは、実際のAPIを利用するので…
Rubyアプリケーション開発をするにあたり、外部サービスとAPI連携を行う場合があります。 前回はHTTP通信を行うRubyの標準ライブラリであるnet/httpを利用した外部APIとの連携方法について紹介しました。 今回はHT…
Rubyアプリケーション開発をするにあたり、外部サービスとAPI連携を行う場合があります。 RubyではHTTP通信を行う標準ライブラリとしてnet/httpが用意されています。 今回はnet/httpを利用して、API経由で外…
Rubyデータ不整合が発生した時や既存のカラムの値を変更したい時など、データを手動で更新しなければいけません。 本番データを直接操作することになるため、手動更新は慎重に行う必要があります。 今回はRuby on Railsアプリ…
Rubyこんにちは。Enjoy IT Life管理人の@nishina555です。 前回、【Rails】asset_syncを利用してCloudFront + S3からアセットファイルを配信するでasset_syncの利用方法に…
Rubyこんにちは。Enjoy IT Life管理人の@nishina555です。 Railsアプリケーションで利用されるアセットファイルは、デフォルトの設定ではアプリケーションサーバに配置されています。 今回はアセットファイル…
Rubyこんにちは。Enjoy IT Life管理人の@nishina555です。 PumaとはRails(Ruby/Rackアプリケーション)のWebサーバーです。 Pumaを起動することでHTTPリクエストがさばけるようにな…
Rubyこんにちは。Enjoy IT Life管理人の@nishina555です。 Railsアプリケーションを開発する際、開発環境であればrails sを実行するだけで簡単にアプリケーションを立ち上げられます。 しかし、です。…
Rubyこんにちは。Enjoy IT Life管理人の@nishina555です。 Railsアプリケーションを実際にサービスとして稼働させるためにはWebサーバーとの連携は必須です。 今回はPumaを利用してWebサーバー(n…
Rubyこんにちは。Enjoy IT Life管理人の@nishina555です。 今回はRails6 + MySQL8の開発環境をCentOS8上に構築する手順について紹介します。 開発環境(development)でサーバー…
Rubyこんにちは。Enjoy IT Life管理人の@nishina555です。 前回、『ローカル開発環境の構築不要!Dockerを利用したRailsアプリ起動手順』でDocker環境でRailsアプリを起動させる手順について…