Rails 6 introduces new code loader: Zeitwerk

Zeitwerk is the new code loader that comes with Rails 6 by default. In addition to providing autoloading, eager loading, and reloading capabilities, it also improves the classical code loader by being efficient and thread safe. According to the author of Zeitwerk, Xavier Noria, one of the main motivations for…

Setting up a high performance Geocoder

One of our applications uses geocoding extensively. When we started the project, we included the excellent Geocoder gem, and set Google as the geocoding backend. As the application scaled, its geocoding requirements grew and soon we were looking at geocoding bills worth thousands of dollars. Read more about this at:…

Using Concurrent Ruby in a Ruby on Rails Application

Concurrent Ruby is a concurrency toolkit that builds on a lot of interesting ideas from many functional languages and classic concurrency patterns. When it comes to writing threaded code in Rails applications, look no further since concurrent ruby is already included in Rails via Active Support. Read more about this…

Rails 5 silences assets logs in dev mode by default

As a Rails developer, it was a familiar picture of assets logs flooding the whole terminal in development mode. Fortunately, we could include quiet_assets gem in our application. It turns off the Rails asset pipeline log in development mode. Read more about this at: Rails 5 silences assets logs…

Rails 5 Expression Indexes & Operator Classes support

Let’s assume that in our health care application we have a page which shows all Patients. This page also has a filter and it allows us to filter patients by their name. We could implement the filter as shown here. Patient.where("lower(first_name) = ?", first_name.downcase)Read…

Attach arbitrary metadata to an Active Job in Rails 5

Rails 4.2 came with built-in support for executing jobs in the background using Active Job. Along with many enhancements to Active Job, Rails 5 provides the ability to attach arbitrary metadata to any job. Read more about this at: Attach arbitrary metadata to an Active Job in Rails 5…