紙一重の積み重ね

35歳のエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

ruby

binding.pryでデバッグ中に、意図的に例外を発生させてrescueでキャッチする方法 #Rails5

やりたいこと binding.pryでデバッグ中に、rescueで実装した例外処理を確認したい。 実現方法 raiseを使う。 実装例 def update @hoge ||= hoge ApplicationRecord.transaction do binding.pry # 例外発生 raise ActiveRecord::RecordInvalid.new(@hoge) @ho…

【N+1問題対策】Ransackとincludesメソッドを使ってActiveRecordの多段の関連を検索する方法 #Rails5

はじめに N+1問題を解消するために、複数の関連を持つModelをincludesメソッドで解消する方法をメモ。 実行環境 Rails5.2.0 Ransack Slim Model定義 Userに持っている名称と、Corporationに持っている名称を取得したい。 class User < ApplicationRecord has…

【Ruby】多重配列の中身を1行ずつ改行して表示したい

はじめに AtCoderの問題をいろいろやっている中で、多重配列について迷ったのでメモ。 やりたいこと 多重配列の中身を1行ずつ改行して表示したい。 実現方法 joinメソッドを使う。 docs.ruby-lang.org 実装例 $ irb 2.4.0 :001 > H,W=3,4 => [3, 4] 2.4.0 :0…

【エンジニア勉強会】「サービスを Ruby / Rails で成長させるためにやったこと」に参加してきました

はじめに 先週、みんなのウエディングさんと、メドピアさん主催で行われたエンジニア勉強会に参加してきました。 感想 MobaSifという存在を初めて知った モバゲータウンのFrameworkだったんですね 新卒社員の方がLTしてて偉い 自社のサービスの開発手法は、…

【ドットインストール】RSpec学習まとめ【lesson7】

要点 describeキーワードは、テスト対象を指定するもの。 describeは入れ子にすることができる。 トップレベルではdescribeの前に、RSpec.をつけることが推奨される。下位レベルでは不要。 describeは、contextと書いても同じ意味になる。 テスト対象がモノ=…

【RSpec入門】はじめてRSpecのテストコードを作成して実行するまでのまとめ

ドットインストールの学習を元に、はじめてRSpecを動かしてみます。 動作環境 Ruby 2.3.0 RSpec 3.4.4 Cloud9 失敗するクラスを書く サンプルのテストコードを作成する。 RSpec.describe "A calc" do # itで囲まれた範囲がexample # 期待される振る舞いのこ…

【Ruby】ドットインストールRuby入門(全26回)を完走しました

ドットインストールの学習状況です。 学習中のレッスン Ruby入門 (全26回) 現在の進捗状況 全26回完了。 所要時間 5日間。 − なんだかんだで5〜6時間くらい。 作成したプログラム github.comにて管理しています。 やってみた感想 基礎の基礎から学べるので非…

【Ruby】ドットインストール学習中

ドットインストールの学習状況です。 学習中のレッスン Ruby入門 (全26回) 現在の進捗状況 20章まで完了。 残り6章。 作成したプログラム github.comにて管理しています。 学習の効率化のために ドットインストールの有料オプションに申し込みました。 無料…

【Rails5】Rubyの文字列リテラルはダブルクォーテーションが基本だと思う

開発中のアプリケーション仕様 viewのテンプレートはslimを使用 多言語対応のため、日本語はja.ymlに定義 今日の失敗 Rubyの式展開が文字列としてそのまま展開されてしまった。 = smart_article name: t('title.#{@class_name}_index') view側では、title.#{…

【Rails5】includedをincludeと記載して30分ハマった件について

開発時に猛烈にはまってしまったので自戒のために残します。 発生したエラー ArgumentError (wrong number of arguments (given 0, expected 1+)): 原因 コーディングミス。 includedと記述するべき箇所を、includeと書いてしまっているため。 デバッグ bind…