Rails 5.1 Encrypted secrets management

Before Rails 5.1, secrets management was a hassle. Gems like dotenv-rails, sekrets were being used to manage secrets in Rails applications. Rails 5.1 released secrets management feature based on sekrets gem. This article will explain how to manage application secrets with Rails 5.1 applications.

»
Author's profile picture Akshay Mohite on Rails |

Rails ActiveRecord Subqueries

Writing subqueries can be a tedious job, when working with Rails ActiveRecord. Rails ActiveRecord can handle subqueries. Subqueries can be written by passing ActiveRecord Relation in where clause. This article discusses how to write subqueries with ActiveRecord in Rails.

»
Author's profile picture Akshay Mohite on Rails |

Rails find missing indexes on tables with lol_dba gem

Missing indexes on database tables causes performance issues. lol_dba gem helps finding out missing indexes on database table in Rails code. lol_dba performs static analysis of the code to find out missing indexes. We will take a look at how to use lol_dba to find out indexes. lol_dba also helps creating a migration to add the requred indices.

»
Author's profile picture Akshay Mohite on Rails |

Rails Soft Delete with Paranoia gem

Sometimes, we need to delete records logically but not physically. Paranoia gem allows us to soft delete records. Records are marked as deleted by a column in a table. Article helps understand how to soft delete Records in Rails with Paranoia gem.

»
Author's profile picture Akshay Mohite on Rails |

Rails ActiveAdmin N+1 query optmization for controller actions

ActiveAdmin is one of the most used Admin interface with the Rails applications. It provides an easy way to view, create, update or destroy records. When a model is registered with ActiveAdmin, it may have associations. In that case, when index page is opened for the model, it fires N+1 queries to fetch the values of an associated class. This presents performance bottleneck. This article will help remove N+1 querying on ActiveAdmin controller index action for a model.

»
Author's profile picture Akshay Mohite on Rails |

Rails form_with - alternative to form_for and form_tag

Rails 5.1 added form_with form helper method that provides capabilities of form_for and form_tag. Rails unified form_for and form_tag that provide similar interfaces to generate forms with form_with helper.

»
Author's profile picture Akshay Mohite on Ruby |

Safe navigation operator in Ruby

Ruby 2.3 has introduced safe navigation operator. Safe navigation operator returns nil if a method is called on a nil object. Before this, if a method is called on a nil object, it throws an error as given below.

»
Author's profile picture Akshay Mohite on Ruby |

Use find_each instead of all.each in Rails

In Rails, sometimes we need to iterate over all the records from a model. To achieve this people prefer to use all.each on a model. This can lead to usage of memory if there are millions (huge number of) records in the table.

»
Author's profile picture Akshay Mohite on Rails |

Array comparison in ruby

I was working on a problem to check on a large array of integers to check whether it is a part of another array or not. Both the arrays have unique elements, but not in sorted order. So there are multiple ways possible to this, but I was not sure that which approach is most efficient. I searched for this but couldn’t come across anything valuable. Then I decided to benchmark whole approach by my self.

»
Author's profile picture Gaurav Singh on Ruby |

Ruby do not use keys method on a hash in loop

Today, I was looking at the internal working of a gem. While working on the same, I came across the code where the network calls were being made and it had to check if the response params has some set of keys.

»
Author's profile picture Akshay Mohite on Ruby |

Google Cloud HTTPs load balancing with Letsencrypt certificate

To setup HTTPs load balancer on Google Cloud Platform , we need to create an SSL certificate beforehand. Letsencrypt can be used to create an SSL certificate free of cost. The SSL certificate provided by Letsencrypt is valid for 3 months. In this article, we will learn how to setup HTTPs load balancing using Letsencrypt certificate for a Ruby on Rails application on Google Cloud Platform.

»
Author's profile picture Akshay Mohite on Devops |

Asynchronous Programming in Ruby

In traditional programming practice, I/O operations happen synchronously. The main thread will be blocked until I/O operation gets completed and CPU remains idle for the time I/O operation is getting completed. Consider the following example where CPU is blocked until query execution completed.

»
Author's profile picture Gaurav Singh on Ruby |

Devise model custom field updates with Rails

Devise gem helps in creating User Authentication layer for the Ruby on Rails applications. The other day, I was taking a session on Hackhands to resolve a query from a Ruby on Rails developer. The developer had added an enum attribute role on the users table. The query was how to update custom attribute added to users table generated by devise gem.

»
Author's profile picture Akshay Mohite on Rails |

Rails 5.2 introduces Active Storage for File Uploads

DHH [Creator of Rails] has recently announced Active Storage as a built in support for file uploads. Active Storage is targeted to be released with Rails 5.2. The development has been started on Github in ActiveStorage repository. It is started as a separate repository for now. This ActiveStorage is eventually planned to be merged in Rails repository.

»
Author's profile picture Akshay Mohite on Rails |

Rails 5 Pluck query changes over Rails 4

Rails 5 has improved the way query was done on database when pluck was called on a model. Before Rails 5, when pluck was called, it used to query database even if the activerecord collection is queried before. There are some posts explaining don’t pluck unnecessarily In this post we will discuss how Rails 5 has improved the way pluck used to work.

»
Author's profile picture Akshay Mohite on Rails |