MySQL database dump without system tables

candidates=$(echo "show databases" | mysql -u root | grep -Ev "^(Database|mysql|performance_schema|sys|information_schema)$")
mysqldump -u root --databases $candidates > full-backup-without-system-tables-$(date +%F).sql
Share

Slow Assets Fix

To improve compile Sometimes you just need to cleanup the assets cache

rake assets:clobber
rake assets:precompile
Share

FreeBSD Set Timezone and Time to chmos clock

The following commands can be used to change time zone.
When the file /etc/wall_chmos_clock exists, it wil interpret the chmod time as local time.
Else it interprets the systemtime as UTC time

cp /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime
touch '/etc/wall_cmos_clock'
adjkerntz -i
Share

Emoticons in Rails Database

To support emoticons in a MySQL database you must use the utf8mb4 character set.
This isn’t a rails default.
To make sure the database uses the correct format I use the following migration to change the default charcter set

class InitDatabase < ActiveRecord::Migration[5.2]
  def up
    execute "ALTER DATABASE `#{connection.current_database}` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"
  end
end

More info about the reason why I choose to use utf8mb4_unicode_ci as collection
https://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci/766996#766996

And force rails in using max string length of 191 which is required for the keylength of 767.
You can add the following monkey patch to the initializer

# config/initializers/monkey_patch_mysql_utf8mb4.rb
require 'active_record/connection_adapters/abstract_mysql_adapter'

module ActiveRecord
  module ConnectionAdapters
    class AbstractMysqlAdapter
      NATIVE_DATABASE_TYPES[:string] = { name: "varchar", limit: 191 }
    end
  end
end
Share