class Mobility::BackendGenerators::Base

Public Class Methods

next_migration_number(dirname) click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 19
def self.next_migration_number(dirname)
  ::ActiveRecord::Generators::Base.next_migration_number(dirname)
end

Public Instance Methods

backend() click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 23
def backend
  self.class.name.split('::').last.gsub(/Backend$/,'').underscore
end
create_migration_file() click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 11
def create_migration_file
  if behavior == :invoke && self.class.migration_exists?(migration_dir, migration_file)
    ::Kernel.warn "Migration already exists: #{migration_file}"
  else
    migration_template "#{template}.rb", "db/migrate/#{migration_file}.rb"
  end
end

Protected Instance Methods

attributes_with_index() click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 29
def attributes_with_index
  attributes.select { |a| !a.reference? && a.has_index? }
end
translation_index_name(column, *columns) click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 33
def translation_index_name(column, *columns)
  truncate_index_name("index_#{table_name}_on_#{[column, *columns].join('_and_')}")
end

Private Instance Methods

check_data_source!() click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 39
def check_data_source!
  unless data_source_exists?
    raise NoTableDefined, "The table #{table_name} does not exist. Create it first before generating translated columns."
  end
end
data_source_exists?() click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 45
def data_source_exists?
  connection.data_source_exists?(table_name)
end
migration_dir() click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 63
def migration_dir
  File.expand_path("db/migrate")
end
migration_file() click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 67
def migration_file
  "create_#{file_name}_#{attributes.map(&:name).join('_and_')}_translations_for_mobility_#{backend}_backend"
end
template() click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 59
def template
  "#{backend}_translations"
end
truncate_index_name(index_name) click to toggle source
# File lib/rails/generators/mobility/backend_generators/base.rb, line 51
def truncate_index_name(index_name)
  if index_name.size < connection.index_name_length
    index_name
  else
    "index_#{Digest::SHA1.hexdigest(index_name)}"[0, connection.index_name_length].freeze
  end
end