Why Bullet Gem? For this Rails optimization, we'll focus on optimizing repeated SQL calls to retrieve objects associated with many relationships: N+1 queries problem. The solution to such an issue is an eager loading association. Unoptimized N+1 affected code takes a significantly longer time as N times additional SQL calls are needed. But, we should be careful when using that eager loading approach. This because unused eager loading can deteriorate our Rails app performance instead of improving it. It's where the Bullet gem comes in handy. This gem will help us to find where
the N+1 queries problem is happening.
the eager loading associate is unused.
How to use Bullet Gem? This depends on the current application's state. In our case, we do these:
Add the bullet gem into Gemfile.
Define a new Rails environment called optimization.
Configure it to install the gem for that environment only
Run the Rails app with that environment
1. Add the Bullet gem into Gemfile. Here, we use its latest…
Background There are many gems for implementing two-factor authentication for Rails app out there. But, most of them don't work properly with Devise out from the box. Some gems offering seamless integration with Devise gem never work smoothly with our existing Rails app. This is why we share our experience and strategy to implement two-factor authentication using Devise and ActiveModel::Otp gems. This implementation, based on our experience, works very well with the latest Google Authenticator app of both iPhone and Android (version 5.10 as of 2020/06). The rqrcode gem does a nice job to provide us with QR code that's always scannable by the Google Authenticator. Oh, we run this on Ruby 2.6.6 and Rails 6. So, we can guarantee it's working with the latest Rails version at the time we write this (2020/06). 1. Prepare Gemfile You need to add several gems to achieve this. If you have an existing Rails app with Devise already, then feel free to skip the devise gem and add the rest of them. In…
Privacy settings changed!
Article is saved. Do you want to continue editing the article or leave and edit later?