class GeneratedSchemaValidations::Dumper

Public Class Methods

define(info = {}, &block) click to toggle source
# File lib/generated_schema_validations/dumper.rb, line 22
def self.define(info = {}, &block)
  new.define(info, &block)
end
generate() click to toggle source
# File lib/generated_schema_validations/dumper.rb, line 4
def self.generate
  return unless Rails.env.development?

  file = Tempfile.new(['schema', '.rb'])
  begin
    schema_content = File.read(Rails.root.join('db/schema.rb'))
    schema_content.gsub!('ActiveRecord::Schema', 'GeneratedSchemaValidations::Dumper')
    raise 'The scheme is not well-formed.' if schema_content.include?('ActiveRecord')

    file.write(schema_content)
    file.close

    load file.path
  ensure
    file.unlink
  end
end

Public Instance Methods

add_foreign_key(*)
Alias for: do_nothing
create_table(table_name, *, &block) click to toggle source
# File lib/generated_schema_validations/dumper.rb, line 40
def create_table(table_name, *, &block)
  @table_validations_ruby ||= ''
  @table_validations_ruby += GeneratedSchemaValidations::Table.new(table_name, &block).to_s
end
define(info, &block) click to toggle source
# File lib/generated_schema_validations/dumper.rb, line 26
def define(info, &block)
  instance_eval(&block)

  template_ruby = File.read(File.expand_path('template.rb', File.dirname(__FILE__)))
  template_ruby.gsub!('VERSION_INFO', info[:version].to_s)
  indention_spaces = template_ruby.match(/( +)TABLE_VALIDATIONS/)[1]
  table_validations_ruby = @table_validations_ruby.lines.map do |line|
    line.strip.present? ? "#{indention_spaces}#{line}" : "\n"
  end.join
  template_ruby.gsub!("#{indention_spaces}TABLE_VALIDATIONS", table_validations_ruby)

  File.write(Rails.root.join('app/models/concerns/schema_validations.rb'), template_ruby)
end
do_nothing(*) click to toggle source
# File lib/generated_schema_validations/dumper.rb, line 45
def do_nothing(*); end
Also aliased as: enable_extension, add_foreign_key
enable_extension(*)
Alias for: do_nothing