Ruby
RubyのProcとかMethodとかの理解が少し進んできたのでまとめる 今回はProcについて Procとは Rubyのブロック文をオブジェクト化したもの ブロック文はdo ~ endや{ ~ }でよくつかう一連の処理をまとめたもの だからといってdo ~ endを直接変数に入れるとかは…
Rubyにおけるサービスクラスの作り方で、一つ作り方を考えたので残しておきます。 サービスクラスとは複数のモデルを使ってビジネスロジックを記述を行うものです、ここでの詳細は割愛しますが、以下の記事が有名でとても勉強になります。 qiita.com 例とし…
再帰関数について軽くまとめてみます、今回はRubyで書きます。 再帰関数とは 関数Aの中で同じ関数Aを使う処理を行う関数のことです。 例: def A(num) A(5) end ↑みたいに普通に呼び出すだけだと、Aが呼んだAが呼んだAが呼んだAが…と無限ループになってメモ…
システム間連携等の事情で、別DBを作ってデータを流し込みたくなったので実装してみました。 手順 例としてBookモデルを作り、別DBを対象にするようにします。 環境はmysqlです。元々使っているDBはmain_database、新しく使うDBはsub_databaseという名前にし…
Rubyにてセッタをもたないimmutableなクラスを作り、to_hashで値を取ってくるようにしたのでまとめます。 今回は例として本(Book)クラスを作ります。 完成品 class Book ATTRIBUTE_NAMES = [:name, :author, :price].freeze attr_reader *ATTRIBUTE_NAMES …
今回はただの一発ネタです。 Rubyの真偽値のtrueとfalseには.!メソッドというものがあるのを知りました。 真偽値をひっくり返すものです。 true.! # false もちろん、頭に!を付けてもOKです !true.! # true trueが!メソッドでfalseになって、頭の!でtrueに戻…
RubyのObject#tapが便利だったので紹介します。(昔からあるらしいけど) tapメソッドとは ブロック文を渡すと中身の処理を走らせてレシーバを返すメソッドです。 hoge = "test".tap do |string| puts string true end puts hoge # "test" Objectクラスに定…
Rubyで開発中、サンプルデータ等を用意する時に役立つメソッドがあったのでメモします。 Arrayクラスのインスタンスメソッドであるsampleメソッドというもので、「配列の中からランダムに返す」という機能です。 [1,2,3].sample => 3 # 毎回変わる 真偽値を…
Rubyの勉強していたらNumeric#coerceメソッドというものを見つけたのでメモ 機能 全ての数値オブジェクトに対して使えるメソッドで、引数で与えられた数を自分と同じクラスにして自分とセットで配列で返すものだそうです。 hoge = 1.6 hoge.coerce(5) => [5.…
はじめに 基礎からRubyの勉強をし直そうということでプログラミング言語 Rubyをガッツリ読み直していると、普段何気なく使ってる数値も深く書かれているので少しまとめます。 数値について 全ての数値オブジェクトは Numericクラスのインスタンス。整数であ…
はじめに Rubyの勉強を家でしている時に「これ実際に動かさないとわからんな」ということが度々あります。 Macだと homebrewや rbenvを使って環境構築をする場合が多いですが、今回はMacに直接インストールしたくないと思いDocker for Macで作りました。 敷…
DBから取ってきた文字列を表示する際に、URLが混ざっていた場合aタグに置き換えて表示する必要があったためその処理を書きました。 コードはこんな感じです。 require 'uri' def convert_url_into_a_tag(text) text.gsub(URI.regexp(['http', 'https'])) do …
経緯 僕はRailsを使って開発をしているのですが、「なんで rails consoleでは綺麗に色分けされて表示されるのに、 irbではずっと白黒なんだろう」と思ってました。 よくよく見るとうちのプロジェクトで rails console時に動いているのって pry-railsってgem…
Rubyでクラスを作って色々処理を書いていると、セッターメソッド周りで意図しない挙動をしたりRubocop(静的コード解析ツール)に「冗長なselfつけんじゃねーよ」と怒られたりしたのでまとめます。 問題 問題のコードはこちらです、ギターをクラス化してみま…
Rubyでクラスの外から呼べないプライベートなクラスメソッドを書く時にちょっとクセがあったのでご紹介します。 方法 こんな感じに書くと宣言できます。パブリックメソッドの hogeから プライベートメソッドの fugaを呼び出してます。 class Hoge def self.h…
割と衝撃的だったのでメモ 方法 Object#sendメソッドを使います。 sample class Hoge private def test_method puts "hoge" end end hoge = Hoge.new hoge.test_method # エラー hoge.send(:test_method) # 動く 用途 これを普通に使ってるとプロジェクトが…