class RecordsRip::InstallGenerator

Constants

MYSQL_ADAPTERS

Public Class Methods

next_migration_number(dirname) click to toggle source
# File lib/generators/records_rip/install/install_generator.rb, line 17
def self.next_migration_number(dirname)
  ::ActiveRecord::Generators::Base.next_migration_number(dirname)
end

Public Instance Methods

create_migration_file() click to toggle source
# File lib/generators/records_rip/install/install_generator.rb, line 21
def create_migration_file
  add_records_rip_migration("create_tombs",
                            item_type_options: item_type_options,
                            tombs_table_options: tombs_table_options)
end

Private Instance Methods

add_records_rip_migration(template, extra_options = {}) click to toggle source
# File lib/generators/records_rip/install/install_generator.rb, line 47
def add_records_rip_migration(template, extra_options = {})
  migration_dir = File.expand_path("db/migrate")
  if self.class.migration_exists?(migration_dir, template)
    ::Kernel.warn "Migration already exists: #{template}"
  else
    migration_template(
        "#{template}.rb.erb",
        "db/migrate/#{template}.rb",
        {migration_version: migration_version}.merge(extra_options)
    )
  end
end
item_type_options() click to toggle source
# File lib/generators/records_rip/install/install_generator.rb, line 29
def item_type_options
  opt = {null: false}
  opt[:limit] = 191 if mysql?
  ", #{opt}"
end
migration_version() click to toggle source
# File lib/generators/records_rip/install/install_generator.rb, line 60
def migration_version
  major = ActiveRecord::VERSION::MAJOR
  if major >= 5
    "[#{major}.#{ActiveRecord::VERSION::MINOR}]"
  end
end
mysql?() click to toggle source
# File lib/generators/records_rip/install/install_generator.rb, line 35
def mysql?
  MYSQL_ADAPTERS.include?(ActiveRecord::Base.connection.class.name)
end
tombs_table_options() click to toggle source
# File lib/generators/records_rip/install/install_generator.rb, line 39
def tombs_table_options
  if mysql?
    ', { options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci" }'
  else
    ""
  end
end