Hyurakuのエンジニア日誌

SE出身Webエンジニアのブログ

リモートのマスターに合わせたくなったときに使うコマンドの解説 #21

git

先日、ローカルブランチでのconflict多すぎてリモートに合わせるのが難しいのでローカルブランチを強制的にリモートのに合わせたい。と思ったときに見付けたコマンドを紹介する。 以下コマンド記載。 git fetch origin git reset --hard origin/master それ…

Rubyのdropメソッドとtakeメソッド #20

今日はRubyの配列に関するメソッドdrop,takeについて紹介する。 1. drop リファレンスより参照。 # Array.drop(捨てる要素数) a = [1, 2, 3, 4, 5, 0] a.drop(3) > [4, 5, 0] 2. take リファレンスより参照。 # Array.take(要素数) a = [1, 2, 3, 4, 5, 0] a…

テーブルを呼び出す、または結合するRailsのメソッド #19

テーブルを呼び出す、または結合するメソッドがいくつかあるので、 今回はドキュメントに記載されている例を元に振り返る。 1. includes 関連しているテーブルを呼び出す。 Page.includes(:category) # SELECT "pages".* FROM "pages" # SELECT "categories"…

Rubyのメソッドblock_given?の紹介 #18

先日コードを読んでいたときに気になっていたメソッドblock_givin?について紹介したい。 1. block_given 公式サイトより参照。 メソッドにブロックが与えられていれば真を返します。 ブロックとは{}に囲まれた引数や処理のことである。 2. 実際に書いてみた …

ジュニアエンジニアに伝えたい15のアドバイス #17

今日はIf I knew then what I know nowという記事に書かれていた15のアドバイスを備忘録としてまとめた。 コードレビューのときは頭を下げなさい。謙虚でありなさい。 あなた自身ではなくコード自体のレビューですから。 コードを掘り下げる前には読書が必要…

N+1問題解消のヒントを教えてくれるbulletの紹介 #16

N+1問題を解決するためにいつもbulletを使っているので、 使い方を忘れぬようメモをする。 1. bullet N+1問題が発生している箇所を検出、指摘するgem。 2. 使い方 まずはbulletをインストールする。 gem install bullet またはgemfileに書き込んだ後でbundle…

知っておきたいRubyのarrayメソッド6つ #15

Rubyでarrayを扱うときに、Six Ruby array methods you need to know という記事を読んだ。紹介されたメソッドの中にはあまり使っていないのがあったので、 備忘録がてらまとめてみた。 1. Map/Each mapとeach、やっていることは同じだが次の違いがある。 - …

特定のレコード位置から取得するメソッドoffsetについて #14

今日はoffsetについて振り返る。 offset 特定のレコード位置から取得する。 モデル。offset(取得開始位置) 使用例 次のコードでPageテーブルの7件目以降を取得できる。 Contact.offset(7) # SELECT "contacts".* FROM "contacts" OFFSET $1 [["OFFSET", 7]]…

ActiveRecord::Associations::CollectionProxyとは何なのか #13

railsのアプリケーションを作成したときにクラスを調べていたさいに ActiveRecord::Associations::CollectionProxyと表示されたので、 今回はこのRelationについて調べてみる。 1. 表示された状況 次のコードを書いていたときに ActiveRecord::Associations:…

Scopeをつかってモデル内のメソッドを書ける方法 #12

railsのアプリケーションを作成したときにscopeの使い方を 学んだので、今回はscopeの使い方を振り返る。 1. scopeとは railsのモデル内に記載するメソッドのこと。 2. もしもscopeを使わなかったら 今回はContactとGroupの2つのモデルを用意する。 Contact…

pythonの内包記法の解説。 #11

趣味でPythonを書いていた時リストを簡単に書ける記法について学んだ。 今日はその記法である内包記法について解説する。 0. 内包表記とは リストや辞書型のオブジェクトを生成するための構文構造。 1行でリストを作成できる。 1. リスト型 基本的な内包記法…

rails g によって不要なファイルが生成されるのを防ぎたい。 #10

rails g scaffodのコマンドを実行するとtestやhelperのような余分なファイルが生成されてしまう。 rails g scaffold book --<中略>-- invoke test_unit create test/controllers/books_controller_test.rb invoke helper create app/helpers/books_helper.rb…

レコードの状態をチェックする4つのメソッド #9

本日はレコードの状態をチェックする4つのメソッドを解説する。 参考サイト Railsドキュメント 1. new_record? 対象のモデルが新しいコードかをチェックする。 > member_a = Member.new #<Member:0x00007f99decabe88 id: nil name: nil > > member_a.new_record? true 2. persisted? 対象のモデルが保存済み</member:0x00007f99decabe88>…

定数を設定するメソッドconst_setについて調べてみた。#8

今日は定数を設定するconst_setについて調べてみた。 1. const_set 説明: クラスやモジュールに定数を設定する。 使い方: モジュール名.const_set(名前,値) 2. 実際に書いてみた 下のファイル(index.rb)を実行する。 class Product end Product.const_set…

特定のカラムのみを取得できるpluckを振り返る。#7

任意のカラムの配列を取得メソッドのひとつであるpluckについて振り返る。 1. plunk 公式リファレンスより参照。 説明: 任意のカラムの配列を取得する 使い方: モデル.pluck(カラム名) 2. 実際の使用方法 もしもpluckを使わなかったら次のように書いていた。…

gitコマンドの補完がしたい #6

git

Gitコマンドを使っているときに、'同じコマンドをゼロから入力するのではなくて、tabを使用して補正したいな'と思ったので、 Gitコマンドを自動補完できるやり方を調べた。 1. 手順 まず必要なファイルの場所を特定する。 Git-completion.bash Gitの自動補完…

rubyのメソッド呼び出しの一つであるyieldが気になったので調べてみた。#5

最近Rubyのコードを読んでいる時にyieldが使用されていたので、 yieldの用法を振り返る。 1. yield 公式ガイドより参照。 自分で定義したブロック付きメソッドでブロックを呼び出すときに使います。 引数をブロックパラメータとして渡してブロックを評価しま…

Navberのタブを見ているページによってアクティブにできるようにしたい #4

連絡先管理アプリケーションを作っているときに'クリックしているページによってnavberのタブに色を付け足いな'と考えたので、そのときの実装を解説します。 作成したアプリのリンク 1. 実際の画面 クリックしたページによって各タブがアクティブになってい…

よく使うHomebrewのコマンドをまとめてみた #3

環境構築でお世話になっているHomebrewでよく使っているコマンドを振り返った。 1. Homebrewとは Mac専用のパッケージ管理ツール このツールを使ってパッケージをインストールできる。 下のコマンドでMacにインストールできる。 /usr/bin/ruby -e "$(curl -f…

rubyの文字列をメソッドとして扱えるsendメソッドについて #2

実際に"某変数をメソッドとして使用したいが、型が文字列なので実行できない"と困ったときに 学んだメソッドsendについて振り返った。 1. sendメソッドについて 公式ガイドより参照。 send (Object) --< 省略 >-- obj.send(name, [arg, ...]) --< 省略 >-- s…

注意したいrubyの演算子||=の使い方#1

最近Rubyで演算子式||=を使用していて便利だと思っていたが 特に式の左辺について注意しなければいけない点があるようなので今から解説。 ||=とは ドキュメント(https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html)より参照。 文法 式1 op= 式…