What is it, naokirin?

Ruby 3.3 のコマンドラインオプション

前回の記事では、Rubyの特殊変数について書きました。 naokirin.hatenablog.com その中で、コマンドラインオプションで変更される変数も紹介しました。 今回は、コマンドラインオプション自体をまとめてみます。 このページの内容は、Ruby 3.3.0での情報をも…

Ruby 3.3 の特殊変数

Rubyには、特殊変数、もしくは組み込み変数(Pre-defined variables)と呼ばれる $ から始まる変数が定義されています。 普段はほとんど使わないこともあり、忘れることも多いので、今回まとめてみます。 このページの内容は、Ruby 3.3.0での情報をもとにし…

GitHub ActionsでRails edgeでのテストを実行してみる

皆さんは、パッケージやフレームワークのアップデートに追われていたりしないでしょうか? 特に業務では、事業上や法務上の対応など、アップデート以外にも多数行うことがあり、残念ながらEOLギリギリで対応、もしくは超過してしまっていることも多いのでは…

Kaigi on Rails 2023に参加しました!

Kaigi on Rails 2023に参加しました! 久しぶりに、オフラインのカンファレンスに参加したのですが、オンラインとは違って会場の雰囲気などもあって楽しいですね。 kaigionrails.org ここからは、カンファレンスで聞いた内容の感想を簡単に書いておきます。 …

RailsからgRPCのリクエストをしてみる

今回は、RailsからgRPCのリクエストしてみたので、その方法を書き残しておきます。 必要なGemのインストール Railsプロジェクトの準備は済んでいるものとして、Gemをインストールします。 Gemfile に以下を追加して、 bundle install します。 gem 'grpc' ge…

Railsとrails_event_store で始めるイベントソーシング

こんにちは。 今回は、Railsで rails_event_storeを用いたCQRSとイベントソーシングの実装について試してみたので、イベントソーシングとその実装方法について紹介してみます。 Railsでのイベントソーシングについて検討する際の参考になれば幸いです。 なお…

Ruby on Rails(ViewComponent)に Storybook を導入してみる

(個人的な観測範囲からですが)React界隈を中心にデザインシステムなどとともに、Storybookを導入している企業が増えてきているように思います。 自分は直近では、Ruby on RailsでSSRをメインに開発をしていることが多いため、導入がやや難しいと感じていま…

Typescript + vite_rails で Rails に Vite を導入してみる(Hot Module Replacementまで)

最近、フロントエンドは Vite で開発するのが主流になっていると思いますが、Railsの場合、なあなあでそのまま来ている場合も多いかなと思います。 開発体験の改善ができないかということを考える機会があり、RailsでViteを導入する際の手順を vite_railsを…

Rails のモデルを整理しよう

Rails では様々な機能を使って、共通化や抽象化、シンプルなコードへの書き換えなどを行えるようになっています。今回はモデルに焦点を絞り、それらをまとめていきたいと思います。また、整理を始める前に気をつけるべきことをまとめておこうと思います。 Ra…

Rails migrationで使うデータ型を考える

ざっくり migration で指定するデータ型について書いておきます。 型の種類 文字列の扱い 小数の扱い ID パスワードの保存 まとめ 型の種類 Rails の Migration で指定できるデータ型としては一般的に以下があります。(今回の説明のため primary_key は除い…

kaminari に入門して、ページネーションしよう

github.com kaminari といえば、Rails などでページネーションするための gem です。 今回は Rails に導入してみて、ページネーションしてみることにします。 今回は Rails 5.2, kaminari 1.1.1 で行っています。 kaminari をインストールする 確認用に User…

Ruby on Rails の has_secure_password のコードを読んでみる

最近は個人アプリ開発だと OpenID Connect などで済ませてしまうかもしれませんが、Ruby on Railsで直接パスワードを記録する際にデフォルトで利用できる has_secure_password メソッドの実装を読んでみました。 読んだのは Rails v5.2.3 になります。 has_s…

ActiveModel::Model で DBに依存しないモデルを作ろう

もう使い古されたネタという感じですが、Railsを使わずとも ActiveSupport だけを利用してRubyのコードを書くことは結構多いのではないでしょうか。 blank? , present? であったり、 pluralize や try 、 1.year.ago のような呼び出しなど、ヘルパーメソッド…

Ruby合宿 2011に参加してきました!

(今回は本のような形で書いていきます。理由?そうした方が楽しそうだから。) まえがき 参加してきましたよ。「Ruby?スクリプト言語?RubyってRuby on Railsでよく使う言語でしょ?Webアプリケーション作る気ないし、今はやらないかなー」という発言をした…

RubyのModule#define_methodとObject#sendを使ってみる

class Foo def self.createMethod name define_method name do puts name.to_s end end def self.createMethod2 name define_method name do |text| puts name.to_s + text end end createMethod :yes createMethod :no createMethod2 :this end foo = Foo.n…

Rubyのdup、cloneの動作の差異

RubyのObjectクラスに定義されている、dupとcloneという二つのオブジェクトのコピー用のメソッドの動作について確認してみます。バージョンはRuby1.9.2です。 a = Object.new a.freeze # freeze a1 = a.clone a2 = a.dup puts a1.frozen? puts a2.frozen? b …

RubyのMixinをちょっとかじってみた

RubyのMixinがどんな感じかな、ということで試してみた。 # モジュールの定義 module Mod def normal str return "#{self.func str}" end def exclamation str return "#{self.func str}!" end def period str return "#{self.func str}." end end class Foo…