Integrating .ruby-version into your Rails Gemfile ruby

Integrating .ruby-version into your Rails Gemfile

Stop declaring your Ruby version twice: with a recent Bundler your Gemfile can read .ruby-version directly using ruby file: ".ruby-version". The one-line setup, the required Bundler upgrade, and how it keeps rbenv, RVM, or asdf and Rails in sync.

Jul 22, 2024

What is Turbo Frames in Rails? ruby

What is Turbo Frames in Rails?

Turbo Frames let Rails reload just a fragment of the page instead of the whole thing, with no custom JavaScript. What Turbo Frames are within Hotwire, a practical example of wrapping views in frames, and the responsiveness gains you get almost for free.

Jun 17, 2024

Struct vs Data in Ruby 3.2

Struct vs Data in Ruby 3.2

Struct vs Data in Ruby 3.2: what the new immutable Data class does differently, when mutability still makes Struct the right choice, how to extend Data, and benchmarks comparing Data, Struct, and OpenStruct performance.

Implementing read and write databases in Rails

Implementing read and write databases in Rails

Rails read and write databases in practice: configure a primary and replica in database.yml, enable automatic connection switching, update ApplicationRecord, and handle the replication challenges that come with splitting the load.

How to create rake task and pass arguments

How to create rake task and pass arguments

Creating rake tasks and passing arguments, four ways: the default bracket syntax, OptParse, raw ARGV, and Linux-style flags, plus namespaces and prerequisites for organizing tasks in a Rails app, each with a working example.

Adding Custom Inflections in Rails with Zeitwerk

Adding Custom Inflections in Rails with Zeitwerk

Custom inflections in Rails with Zeitwerk: use ActiveSupport::Inflector in config/initializers/inflections.rb to register acronyms like API, CSV, or SSL, so autoloading maps file names to the capitalized class names you want.

Add commit message validator using Ruby and Lefthook

Add commit message validator using Ruby and Lefthook

Enforce consistent commit messages with a small Ruby script and Lefthook: a commit-msg hook that reads .git/COMMIT_EDITMSG, validates prefixes like feat, fix, or docs against a regex, and rejects bad messages before they land. Full script and Lefthook config included.

How to work with JSONB column in pure Ruby on Rails

How to work with JSONB column in pure Ruby on Rails

JSONB columns in Ruby on Rails without extra gems: use store_accessor to read and write keys like normal attributes, set sensible defaults, and validate required keys with a small module. Practical code you can drop into a PostgreSQL-backed Rails app.

What is ETag and how to use it in Rails for caching?

What is ETag and how to use it in Rails for caching?

ETags let browsers skip downloading content that has not changed. What entity tags are in HTTP, then the Rails caching toolkit: stale?, fresh_when, expires_in, expires_now, public requests, and http_cache_forever, each shown with a concrete controller example.

Understanding the Singleton Pattern in Ruby

Understanding the Singleton Pattern in Ruby

The Singleton pattern in Ruby, shown two ways: a hand-rolled class using private_class_method :new with a self.instance accessor, then a cleaner refactor with the built-in Singleton module. What the pattern guarantees and when one shared instance is worth it.

What is ACID?

What is ACID?

ACID stands for Atomicity, Consistency, Isolation, and Durability: the four guarantees behind reliable database transactions. Each property explained with a concrete Rails example, like wrapping a money transfer in a transaction so it fully succeeds or rolls back.

What is instance and class variable in Ruby?

What is instance and class variable in Ruby?

Instance variables versus class variables in Ruby: what @ and @@ actually mean, why an @ variable set at the class level stays empty when read from an instance, and how @@ values are shared by every instance. Short code samples make each behavior easy to verify.

Extend, prepend and include in Ruby

Extend, prepend and include in Ruby

Extend, prepend, and include in Ruby each add module code to a class differently: prepend puts the module before the class so its methods win, extend adds class methods, include adds instance methods. Short runnable examples show how each changes the method lookup chain.