Class: Localtower::Generators::Migration
- Inherits:
-
Object
- Object
- Localtower::Generators::Migration
- Defined in:
- lib/localtower/generators/migration.rb
Constant Summary collapse
- TYPES =
%w(string datetime text uuid integer float json jsonb decimal binary boolean array references).freeze
- ACTIONS =
[ 'add_column', 'remove_column', 'rename_column', 'change_column_type', 'add_index_to_column', 'belongs_to', # 'add_index_to_column_combined', 'remove_index_to_column', # 'create_table', 'drop_table', ].freeze
- DEFAULTS =
[ "true", "false", "nil" ]
Instance Method Summary collapse
-
#initialize(opts) ⇒ Migration
constructor
A new instance of Migration.
-
#last_migration_file ⇒ Object
.
- #remove_all_migrations ⇒ Object
- #run ⇒ Object
Constructor Details
#initialize(opts) ⇒ Migration
Returns a new instance of Migration.
148 149 150 151 |
# File 'lib/localtower/generators/migration.rb', line 148 def initialize(opts) @thor = ThorGeneratorMigration.new @opts = JSON[opts.to_json] end |
Instance Method Details
#last_migration_file ⇒ Object
204 205 206 |
# File 'lib/localtower/generators/migration.rb', line 204 def last_migration_file Dir["#{Rails.root}/db/migrate/*"].sort.last end |
#remove_all_migrations ⇒ Object
153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/localtower/generators/migration.rb', line 153 def remove_all_migrations Dir["#{Rails.root}/db/migrate/*"].each { |migration_file| File.delete(migration_file) } content_schema = """ ActiveRecord::Schema.define(version: 0) do end """ File.open("#{Rails.root}/db/schema.rb", "w") do |f| f.write(content_schema) end end |
#run ⇒ Object
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
# File 'lib/localtower/generators/migration.rb', line 166 def run cmd = "ChangeTheModel#{@opts['migration_name']}AtTime#{Time.now.to_i}" ::Localtower::Tools.perform_migration(cmd, true) @opts['migrations'].each do |action_line| next unless action_line['action'].present? # table_name = action_line['table_name'] # column = action_line['column'] # index = action_line['index'] # default = action_line['default'] # null = action_line['null'] # unique = action_line['unique'] # column_type = action_line['column_type'] # new_column_type = action_line['new_column_type'] # new_column_name = action_line['new_column_name'] action_line["last_migration_file"] = last_migration_file { '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) }, # 'add_index_to_column_combined' => -> { add_index_to_column_combined(action_line) }, 'remove_index_to_column' => -> { remove_index_to_column(action_line) }, 'create_table' => -> { create_table(action_line) }, 'drop_table' => -> { drop_table(action_line) } }[action_line['action'].downcase].call end if @opts['run_migrate'] run_migration_or_nil end end |