Ruby
こちらは「ええな〜コード」の記念すべき第一本目の記事です。「ええな〜コード」とはOSSのコードから勉強・参考になる箇所を抜粋して、記事として紹介するという趣旨の不定期シリーズです。 今回はよくある設定値(configure)について「ええな〜」と思うコー…
単体テストのコードを見ていて、対象のテーブルに存在するレコード数を取得する際の記述が統一されていないことを発見しました。ある箇所ではUser.all.sizeと記述されており、ある箇所ではUser.countと記述されており、どの方法で取得するのが効率が良いのか…
コードレビューをしていていた日のこと。あるテーブル(users)からidで絞り込んでレコードを1件取得する際に、以下のようなコードが頻出していることに気づきました。 User.find_by!(id: params[:user_id]) 処理の内容としては、idカラムでusersテーブルから…
普段の業務でrspecのモック機能には非常にお世話になっています。使い方は非常に簡単で、既存クラスに定義された関数の振る舞いを変更することが出来ます。 (※実際に既存クラスの定義が書き変わるわけではありません) class Hoge def foo 'foo!' end def bar…
ActiveRecordって本当に便利ですよね。SQLを隠蔽して、データベースへのCRUD操作をオブジェクトとメソッドで完結させることが出来ます。一例として、usersテーブルから権限(authority)がadminのレコード一覧を取得する操作は以下のようになります。 (※分かり…
ActiveSupportには、時間を固定することが可能な便利なtravel_toという関数があります(よく単体テストでお世話になっています)。travel_toを呼び出した後にTime.nowで現在時刻を取得してみると、何とtravel_toで指定した日時が取得されるではありませんか。 …
前提条件 Rails外でActiveSupportを使用している テストフレームワークにRspecを使用している エラーについて Railsではなくsinatraを使ったAPIを書いていて、時間停止の便利関数travel_toを呼び出そうと思ったら以下のようなエラーが出てActiveSupportに定…
最近はRubyとRubyOnRailsを使って仕事をしています。RubyやRailsは日本語の情報量が特に多く、やりたいことの多くはGoogleで調べると既に誰かがやっていたり、ライブラリがあったりと誰かが作ったありがたい...コードを使わせて頂くことがよくあります。 し…
機能追加の依頼がきた いつものように業務をこなしていると、スケジュール管理機能にとある機能追加の依頼が来ました。 内容としては複数のスケジュールを作成する関数で祝日での場合には、祝日に該当する日にはスケジュールを作成しないようにしたいとのこ…
出会いは突然に いつものように眠い目を擦りながらコードレビューをしていると以下のようなコードに遭遇しました。 (※部分的に書き換えてあるので、実際には動作していないコードです) def fetch_companies(setting_id) setting = Setting.find_by(id: setti…
コードレビューはじめました 昨年の10月から勤務先企業で開発チームのリーダーになりました。元々はコードをガリガリ書くような業務をしていたのですが、ポジションが変わったため、業務の内容も変化しました。大きく変化した点としてコードをレビューしても…