Use say and say_with_time in migrations to make a useful migration log

Use say_with_time and say in migrations will produce a more readable output in migrations. And if use correctly it could be a helpful friend when something goes wrong because usually it is stored in the deploy log

Is a good practice to use say_with_time and say in migrations. When doing multiple things in a migration, it is more explanatory than just show the name of the file.

For example, imagine you have a migration that just updates column information for all users.

Example

  class UpdateUsersNames < ActiveRecord::Migration
    def self.up
      say_with_time("Spliting name to extract last name")do
        User.find_each do|user|
          user.firstname, user.lastname = name.match(/^([^s]*)s*(.*)$/).to_a[1..-1] if user.changed?
          user.save
          say "#{user.id} was updated"
        end
      end
    end

    def self.down
    end
  end

##Output

  ==  UpdateUserName: migrating =======================
  --Spliting name to extract last name
  --859302 was updated
  --859303 was updated
     ->0.0786s
  ==  UpdateUserName: migrated (0.0787s)===============