Class: Localtower::Generators::Migration
- Inherits:
-
Object
- Object
- Localtower::Generators::Migration
- Defined in:
- lib/localtower/generators/migration.rb
Constant Summary collapse
- TYPES =
%w[string datetime date text uuid integer float json jsonb decimal binary boolean array references].freeze
- ACTIONS =
%w[ add_column add_index_to_column remove_index_to_column belongs_to remove_column change_column_type rename_column drop_table ].freeze
Instance Method Summary collapse
-
#initialize(migrations) ⇒ Migration
constructor
A new instance of Migration.
- #run ⇒ Object
Constructor Details
#initialize(migrations) ⇒ Migration
Returns a new instance of Migration.
118 119 120 121 |
# File 'lib/localtower/generators/migration.rb', line 118 def initialize(migrations) @thor = ThorGeneratorMigration.new @migrations = JSON[migrations.to_json] end |
Instance Method Details
#run ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/localtower/generators/migration.rb', line 123 def run model_names = migrations.map { |line| line['table_name'].camelize }.uniq.join cmd = "Change#{model_names}At#{Time.now.to_i}" ::Localtower::Tools.perform_migration(cmd) migrations.each do |action_line| next if action_line['action'].blank? { 'add_column' => -> { add_column(action_line) }, 'remove_column' => -> { remove_column(action_line) }, 'rename_column' => -> { rename_column(action_line) }, 'change_column_type' => -> { change_column_type(action_line) }, 'add_index_to_column' => -> { add_index_to_column(action_line) }, 'belongs_to' => -> { belongs_to(action_line) }, 'remove_index_to_column' => -> { remove_index_to_column(action_line) }, 'drop_table' => -> { drop_table(action_line) } }[action_line['action']].call end end |