Class: SharedUtilities::MigrationGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Includes:
ActiveRecord::Generators::Migration, Rails::Generators::Migration, OrmHelper
Defined in:
lib/generators/shared_utilities/migration_generator.rb

Instance Method Summary collapse

Constructor Details

#initialize(args, *options) ⇒ MigrationGenerator

Returns a new instance of MigrationGenerator.

Raises:

  • (StandardError)


16
17
18
19
# File 'lib/generators/shared_utilities/migration_generator.rb', line 16

def initialize(args, *options)
  raise StandardError, "Only 'authentication' model is currently implemented" if args.first != "authentication"
  super
end

Instance Method Details

#copy_migrationObject



25
26
27
28
29
30
31
# File 'lib/generators/shared_utilities/migration_generator.rb', line 25

def copy_migration
  if (behavior == :invoke && model_exists?) || (behavior == :revoke && migration_exists?(table_name))
    migration_template "migration_existing.rb", "#{migration_path}/update_authentications_on_#{table_name}.rb", migration_version: migration_version
  else
    migration_template "migration.rb", "#{migration_path}/create_#{table_name}.rb", migration_version: migration_version
  end
end

#inet?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/generators/shared_utilities/migration_generator.rb', line 51

def inet?
 postgresql?
end

#ip_columnObject



46
47
48
49
# File 'lib/generators/shared_utilities/migration_generator.rb', line 46

def ip_column
  # Padded with spaces so it aligns nicely with the rest of the columns.
  "%-8s" % (inet? ? "inet" : "string")
end

#manifestObject



21
22
23
# File 'lib/generators/shared_utilities/migration_generator.rb', line 21

def manifest
  copy_migration
end

#migration_dataObject



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/generators/shared_utilities/migration_generator.rb', line 33

def migration_data
<<RUBY
   ## Required
  #  t.references "resource", :polymorphic => true, :index => true
  #  t.string       :name
  #  t.string       :authtype
  #  t.string       :status
  #  t.string       :status_details
  #  t.#{ip_column}     :tenant_id
  #  t.timestamps
RUBY
end

#migration_versionObject



73
74
75
76
77
# File 'lib/generators/shared_utilities/migration_generator.rb', line 73

def migration_version
  if rails5?
    "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
  end
end

#postgresql?Boolean

Returns:

  • (Boolean)


59
60
61
62
# File 'lib/generators/shared_utilities/migration_generator.rb', line 59

def postgresql?
  config = ActiveRecord::Base.configurations[Rails.env]
  config && config['adapter'] == 'postgresql'
end

#primary_key_stringObject



68
69
70
71
# File 'lib/generators/shared_utilities/migration_generator.rb', line 68

def primary_key_string
  key_string = options[:primary_key_type] || "bigserial"
  ", id: :#{key_string}" if key_string
end

#primary_key_typeObject



64
65
66
# File 'lib/generators/shared_utilities/migration_generator.rb', line 64

def primary_key_type
   primary_key_string if rails5?
end

#rails5?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/generators/shared_utilities/migration_generator.rb', line 55

def rails5?
  Rails.version.start_with? '5'
end