やわらかテック

興味のあること。業務を通して得られた発見。個人的に試してみたことをアウトプットしています🍵

2023-07-01から1ヶ月間の記事一覧

OpenStructの存在に気づいた時にはすでに非推奨だった

Rubyを業務で書き始めて3年目になりますが、まだまだ知らないことばかりだなぁと思わされます。 先々週に届いたRubyWeeklyに構造体(struct)について解説している記事が紹介されており、気になったので記事を読んでみるとOpenStructという自分が全く知らない…

インスタンス作成時の値によって関数の定義を変える方法

ある日のこと、業務中にチームメンバーから非常に面白い質問がありました。 「インスタンス作成時の値によって関数の定義を変えることって可能ですかね?」 ...とのことです。 どういうことかをもう少し詳しく聞いてみると、以下のようなイメージを持ってい…

「Aを変更したらBも変更してね」コメントはいらない

いつものようにプロダクトのコードを読んでいた時のことです。 コード内に「Aを変更したらBも変更してね」という旨のコメントがいくつか記載されていることに気づきました。 def do_something # ここを変更したらlibのdo_somethingも変更すること : end この…

RuboCopに勝手にオレオレCopを実装してみる

前回、RuboCopの処理を追いかけました。 長い旅になりましたが、なんとかRuboCopのコマンドが実行されてから画面に結果が出力されるまでの流れを完全に理解しました。せっかくコードを読んだわけなので何かしらの変更が出来ないか試してみたいと思います。 …

Rubyの出力関数(p pp puts print printf)の違い

Rubyには標準出力するための関数が複数、用意されています。 今更感はありますが、自分が把握しているだけでも5つも関数がなり、一体、何が違うのやら...。 puts p pp print printf それぞれの出力結果を見比べながら、どのように使い分けるべきかを考察して…

Rubyのバージョンアップによってエラーが発生するようになった

バージョンアップによって既存コードが動かなくなる(エラーになる)という現象に初めて遭遇しました。 話には聞くものの、経験したことがなかったので「本当にあるんだ...」と謎に嬉しい気持ちになりました。 バージョンアップをしたのはRuby本体のバージョン…

【Part2 / 2】RuboCopの結果が出力されるまでの実装を追ってみる

※この記事はRuboCopの内部実装を読んでみるシリーズの第2記事です。 前回の記事でターミナルでrubocopコマンドを実行するとRuboCop::CLIクラスのrunが呼び出されて、紆余曲折あって各Copのチェックがコールバックとして呼び出されていることが判明しました。…

【Part1 / 2】RuboCopの結果が出力されるまでの実装を追ってみる

※この記事はRuboCopの内部実装を読んでみるシリーズの第1記事です。 ある日のこと、いつものようにRuboCopに怒られた際に「RuboCopってどうやって作られてるのかな...」と唐突に気になってしまったのでコードを読んでみることにしました。最初は数日あれば終…

RubyでArrayクラスを継承させると面白いことが起きる

後に改めて記事を書きますが、最近はRubocopのコードを読み進めています。 そんな中で「面白いなぁ...」と感じたコードがあったので紹介がてら動作を確認してみたい思います。 なんと定義されたクラスがArrayクラスを継承させているではありませんか。 modul…

Ruby東海 第79回 勉強会に参加してきました

昨日、Ruby東海 第79回 勉強会に参加させて頂きました。 主催者・参加者のみなさん、お疲れ様でした。非常に楽しい時間を過ごさせて頂きました。 rubytokai.doorkeeper.jp オフラインの勉強会に最後に行ったのが、コロナウイルスが流行り出す前だったので実…