A Simple Vanilla Ruby way to Benchmark Test your Code for Speed

In this example, I wanted to know speed differences between the .uniq and .to_set speed. Here’s a simple way to measure computational complexity:

# any_file_name.rb
require 'benchmark'
require 'set'

data = [
  { id: 1, color: "brown", status: "closed" },
  { id: 2, color: "yellow", status: "open" },
  { id: 3, color: "brown", status: "closed" },
  { id: 4, color: "brown", status: "open" },
  { id: 5, color: "red", status: "closed" },
  { id: 6, color: "blue", status: "open" },
  { id: 7, color: "green", status: "closed" },
  { id: 8, color: "green", status: "open" },
  { id: 9, color: "brown", status: "closed" },
  { id: 10, color: "red", status: "open" },
  { id: 11, color: "blue", status: "closed" },
  { id: 12, color: "yellow", status: "open" },
  { id: 13, color: "green", status: "open" },
  { id: 14, color: "yellow", status: "open" },
  { id: 15, color: "blue", status: "closed" },
  { id: 16, color: "blue", status: "closed" },
  { id: 17, color: "blue", status: "closed" },
  { id: 18, color: "green", status: "open" },
  { id: 19, color: "yellow", status: "open" },
  { id: 20, color: "brown", status: "closed" },
  { id: 21, color: "green", status: "closed" },
  { id: 22, color: "red", status: "closed" },
  { id: 23, color: "red", status: "open" },
  { id: 24, color: "red", status: "open" },
];

uniq_start = Time.now
data.uniq{ |x| x[:color] = "red" }
uniq_finish = Time.now
uniq_diff = uniq_finish - uniq_start

p (uniq_diff * 1_000_000).to_s # evaluates to something like 7.0

set_start = Time.now
data.to_set{ |x| x[:color] = "red" }
set_finish = Time.now
set_diff = set_finish - set_start

p (set_diff * 1_000_000).to_s # evaluates to something like 32.0

In the above code we assign variables to the start and end of each function. Then we run the methods and we finally print out the difference times a million so we get the millisecond computational complexity.

Reset Password Forwarding to Root Domain – Deploying a Ruby on Rails app + Heroku and Devise Gem

Today I solved an error in my Ruby on Rails application.

The problem was that the reset password process led to the root path, rather than the reset password Devise view. This was an error in the production version of the application, which is deployed on Heroku, and NOT on my local development version.

My problem was solved by adjusting the config/environments/production.rb file.

I had this:

config.action_mailer.default_url_options = { host: 'windaily.app' }

Which needed to be set to this:

config.action_mailer.default_url_options = { host: 'https://www.windaily.app' }

This was a bit of a tough one to figure out because I wasn’t getting any error messages. It just didn’t work.

But now the production app is working with the Devise :recoverable setting implemented.