Articles by Alkesh Ghorpade

Rails 6 bulk insert records

Rails 6 adds insert_all and upsert_all methods to ActiveRecord

Ruby 3.1 adds error highlighting gem

With changes in Ruby 3.1, we will be able to know which object is nil when an error gets raised.

How to Use Enums in Rails

A deep dive into what enums are, how to create and configure enums using Rails.

Ruby 3.1 adds MatchData#match and MatchData#match_length

Ruby 3.1 MatchData#match returns the substring corresponding to the argument, while MatchData#match_length returns the length of the captured substring.

Rails 7 introduces ActiveModel::API

ActiveModel::API allows adding more functionality to ActiveModel::Model and makes itself a minimum API to interact with Action Pack and Action View.

Rails 7 adds ActiveRecord::QueryMethods#in_order_of to return query results in a particular sequence

Starting with Rails 7, we can return ActiveRecord::Relation results in provided series using the in_order_of method.

Starting with Rails 7, retry failed jobs indefinitely

Pass `:unlimited` symbol to `attempts` parameter of ActiveJob's `retry_on` method, which allows a developer to specify that a job should retry forever until it succeeds.

Rails 7 adds support for `if_exists/if_not_exists` on `remove_foreign_key/add_foreign_key`

Rails 7 adds support for `if_exists/if_not_exists` on `remove_foreign_key/add_foreign_key` in migrations to silently ignore raised exceptions.

Rails 7 adds range serializer for ActiveJob

ActiveJob in Rails 7 allows a range to be passed as an argument to perform method.

Ruby 3.1 adds Array#intersect? method

Ruby Array#intersect? method will return true or false based on common elements present in the two arrays.

Rails 6.1 adds `if_exists` option in `remove_index` operation

Rails 6.1 adds the `if_exists` option in `remove_index` which when set to true won't raise an error if the index doesn't exist.

Rails 6.1.1 allows `where` to reference associations via joined table alias names.

Rails 6.1 allows where clause queries to reference associations used in `join` or `includes` clause via alias names.

Rails 6.1 adds support for role switching and sharding in database

Rails 6.1 has added support for switching connections for one database instead of all databases

Rails makes ActiveStorage `web_image_content_types` configurable

Rails added web_image_content_types config option to ActiveStorage, which allows an application to add content types instead of letting the images be transformed into the fallback PNG format.

Encapsulate each validation error as an Error object

ActiveModel::Error class has changed from Hash based interface to an array of Error objects.

Using Interactors in Rails

Interactors provide a common interface for performing complex user interactions.

Rails - Added sub seconds to Time inspect

Rails has added sub seconds to ActiveSupport::TimeWithZone#inspect method.

Rails - Allows to specify schema cache path in database configuration file

Rails now exposes a new configuration for specifying the location of the schema cache file. This can be done in database.yml using schema_cache_path key.

Rails adds ActiveRecord API for switching multiple database connections

Rails adds ActiveRecord API connects_to and connected_to for switching connections to support multiple databases.

Rails introduces disallowed deprecations in ActiveSupport

Rails has added support to configure disallowed deprecations.

Rails 6 - ActiveSupport Deprecations in Unicode and Chars support in favour of String

Rails 6 has deprecated methods in Unicode and Chars support for ActiveSupport in favor of using ruby 2.3+ String methods directly.

Rails 6.1 adds support for multiple storage services to Active Storage

Rails 6.1 adds support to configure storage services for individual attachment.

Ruby 2.7 - Singleton class yield syntax throws a warning

Ruby 2.7 singleton class yield syntax is warned and will be deprecated in Ruby 3.0.

Ruby 2.7 - Time#inspect separated from Time#to_s

Ruby 2.7 separated Time#inspect from Time#to_s and added sub seconds

Rails 6 adds ability to block writes to a database

Rails 6 adds the ability to block writes to a database even if the database user is able to write using connection.while_preventing_writes

Rails 6 - Active Storage changes

Rails 6 brings in image_processing gem, support for different image types and improvements in Active Storage.

Rails 6 adds after_save_commit

Rails 6 adds after_save_commit callback shortcut.

Ruby Lazy Enumerators

Ruby support for lazy loading enumerators

Rails 6 adds delete_by and destroy_by methods.

Rails 6 ActiveRecord::Relation added two new methods delete_by and destroy_by.

Distance calculation in Ruby using RGeo - Geospatial library for Ruby

Distance/Geospatial calculations in Ruby using RGeo.

Rails 6 - Custom Serializers for ActiveJob arguments

Rails 6 introduces ability to provide custom serialization of ActiveJob arguments.

Rails 6 adds support for disabling database advisory locks

Rails 6 adds support for database configuration to disable advisory locks

Rails 6 - I18n key support for submit_tag key

Rails 6 adds I18n style locale key support to submit tag

Rails 6: Introduces explicitly adding rails server handler option

Rails 6 introduced --using or -u option for specifying the rails server